2017-03-28 57 views
0

如果我们不能将用户输入作为数组大小,那么以下程序如何运行正常?C中数组大小的用户输入C

#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;} 
+2

'如果我们不能为用户输入数组'你是什么意思?您可以。 – Marievi

+0

对不起.....用户输入的数组大小 – user1712

+0

但你可以这样做。 – Marievi

回答

0

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

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

  • 可变长度阵列(尽管随后在C11退居到实现不要求支持一个条件的功能)

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