c - 用户输入 C 中数组的大小

标签 c arrays

如果我们无法接受用户输入的数组大小,那么为什么下面的程序可以正常运行?

#include <stdio.h>
int main()
{
int size, key = -1, i;
scanf("%d", &size);
int A[size];
    for(i = 0; i < size; i++)
    {
        scanf("%d", &A[i]);
    }
    if(A[0] > A[1])
        key = 0;
    else if(A[size-1] < A[size-2])
        key = size-1;
    else{
    for(i = 1; i <= size-2; i++)
    {
        if((A[i] > A[i+1])|| (A[i] < A[i-1]))
        key = i;
    }
}
printf("The key is %d at position %d\n", A[key], key);
return 0;}

最佳答案

Variable-Length Array功能于 C编程语言标准在C99之前随着时间的推移而发生了变化。 C99 中不支持它在当前标准 C11 中,它成为强制性功能它成为一个有条件的功能:

C99 introduced several new features, many of which had already been implemented as extensions in several compilers:

  • 可变长度数组(尽管随后在 C11 中降级为不需要实现支持的条件功能)

所以这取决于您使用的编译器,我认为您使用的编译器支持此功能。 检查此链接:https://en.wikipedia.org/wiki/C99

关于c - 用户输入 C 中数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43061614/

相关文章:

c++ - Python 与 C : different outputs

javascript - 在 javascript 中,如果 : x = []; x. push(x); 会发生什么?

无法弄清楚为什么程序在 C 中崩溃

c - 随机走过 10x10?

c++ - 你能解释一下这个程序中 array+5 的用途吗?

c++ - C 函数从 iOS 设备设置中查找 iOS 用户 12/24 小时偏好

c - 大型 PnP 驱动程序缓冲区

c - mex:计算权;但是,我得到了错误的输出

java - java中数组的向下转换

c++ - C/C++ 程序是否可以通过读取数组末尾 (UNIX) 来产生段错误?