今天一哥们问我,C语言中,const int型的变量能不能设置数组大小,我一想,以前C++经常这样用,这个完全可以的啊,结果被告知是错误的。然后我果断写了test.c,内容如下:
#include <stdio.h>
int main()
{
const int a=2;
const int b=3;
int array[a+b];
return 0;
}
gcc编译后通过,于是反问对方,这不是可以么。顺便在他回复之前上网查了下,网上说这样也是非法的。这时候哥们发过来一条消息,说这样可以,但是int array[a+b]={1,2,3,4,5}; 就编译不过了。
我试了试gcc和g++,结果gcc真的通不过了,g++正常。
局部的数组定义是在堆栈段,是不需要在编译阶段确定数组大小的,这里不能用变量定义数组大小少了一些灵活性。不过还好,g++是可以这么做的。