用户输入C中数组的大小

时间:2017-03-28 05:56:34

标签: 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;}

1 个答案:

答案 0 :(得分:0)

Variable-Length Array编程语言标准中的

C功能在C99不受支持之前已经发生了变化,C99它成为当前标准中的强制功能C11 {1}}它成了一个条件特征:

  
    
      

C99引入了几个新功能,其中许多功能已在多个编译器中作为扩展实现:

    
         
        
  • 可变长度数组(虽然随后在C11中降级为条件特征,不需要支持实现)
  •     
  

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