const类型设置数组大小之C和C++的区别

  今天一哥们问我,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++是可以这么做的。

posted @ 2015-01-20 00:57  木易修  阅读(719)  评论(0编辑  收藏  举报