这是我的一位朋友编写的 C 程序。据我所知,数组必须在 C99 引入 VLA 之前的编译时初始化,或者malloc
在运行时使用。
但是这里程序从用户那里接受 a 的值const
并相应地初始化数组。即使使用 ,它也可以正常工作gcc -std=c89
,但对我来说看起来很不对劲。这一切都依赖于编译器吗?
#include <stdio.h>
int
main()
{
int const n;
scanf("%d", &n);
printf("n is %d\n", n);
int arr[n];
int i;
for(i = 0; i < n; i++)
arr[i] = i;
for(i = 0; i < n; i++)
printf("%d, ", arr[i]);
return 0;
}