#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;
}
Run Code Online (Sandbox Code Playgroud)
没有使用int arr[n],其中n是变量,在C中是非法的?我想知道这里发生了什么.显然,代码适用于我clang LLVM compiler和IDEOne以及Codeblocks.我想编译器只是通过自动内存分配让事情变得简单.但另一个惊人的事实是,当我尝试设置n为1,2或3时,它仍然有效.
自C99起,C标准允许可变长度数组.请注意,C++
标准仍然不允许它们.
另外需要注意的重点是c99之前的版本,对于大多数C++编译器,扩展形式的实现支持可变长度数组.