#include "stdio.h"
int main()
{
int n;
printf("Enter n:\n");
scanf("%d",&n);
int arr[n][n];
arr[3][3] = 4;
printf("%d",arr[3][3]);
getchar();
return 0;
}
没有使用int arr[n]
,其中n是变量,在C中是非法的?我想知道这里发生了什么。显然,代码适用于我的clang LLVM compiler
和IDEOne以及代码块。我想编译器只是通过自动内存分配让事情变得简单。但另一个令人震惊的事实是,当我尝试将n
设置为1,2或3时,它仍然有效。
答案 0 :(得分:6)
自C99起,C标准允许使用可变长度数组。请注意,C ++仍然不允许它们
标准。
另外需要注意的是,对于c99之前的版本,对于大多数C ++编译器,可扩展形式的实现支持可变长度数组。