c语言 定义数组a[n] 这不科学啊??!!

在c语言中貌似不能直接定义数组a【n】(n为变量); (谭浩强版c语言和高教的c语言程序设计都是这么说的)
那为啥编译器会编译通过?而且运行正常(定义了一个有n个元素的数组)。。。
求大神。。附上程序:
#include<stdio.h>
int main()
{
int n=4;
int a[4];
return 0;
}

在guide和vc6.0上都能编译、组建和运行。。。这不科学啊??!!

我想你的代码应该是这样的:
int n=4;
int a[n];
return 0;
现在的编译器都很聪明,自己能优化,int n=4;int a[n];在编译器看来跟int a[4]没有区别
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-09
数组定义只能是a[常量或常量表达式]
你定义的是a[4]当然是通过的,如果你定义成a[n]就通不过了,这是你不细心了
第2个回答  2013-01-09
我晕了,这个int a[4] 4是变量

#include<stdio.h>
int main()
{
int n=4;
int a[n];
return 0;
}

这才和书上说的那种情况
第3个回答  2013-01-09
你的代码中是int a[4];与n没有关系。
相似回答