如果我们无法获取用户输入的数组大小,那么为什么以下程序运行正常呢?
#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;}
答案 0 :(得分:0)
Variable-Length Array
编程语言标准中的 C
功能在C99
不受支持之前已经发生了变化,C99
它成为当前标准中的强制功能C11
{1}}它成了一个条件特征:
C99引入了几个新功能,其中许多功能已在多个编译器中作为扩展实现:
- 可变长度数组(虽然随后在C11中降级为条件特征,不需要支持实现)
所以它取决于您使用的编译器,我认为您使用的编译器支持此功能。 点击此链接:https://en.wikipedia.org/wiki/C99