hiter727 2016-08-09 02:35 采纳率: 50%
浏览 1646
已采纳

C语言:不可变的变量不是常量?(const与define)

由于要用整型常量定义数组,我就用const定义了数组长度,结果编译错误:

#include
#include
/*#define n 5*/

int main()
{
const int n=5;
int rest[n] = {0,0,0,0,0};
printf("%d", rest[0]);
return 0;
}

error: variable-sized object may not be initialized

但当我用宏常量定义时就可以,这是为什么呢?难道不变的变量不是常量?常量不就是不变的量吗?

#include
#include
#define n 5

int main()
{
/*const int n=5;*/
int rest[n] = {0,0,0,0,0};
printf("%d", rest[0]);
return 0;
}
小弟菜鸟一枚,还请大家帮帮忙:)

  • 写回答

2条回答 默认 最新

  • threenewbee 2016-08-09 03:15
    关注

    不同的编译器不同,一些编译器,比如VC++,不允许用变量作为数组初始化的大小,比如
    int n;
    int a[n];
    必须动态分配:
    int n;
    int *a = new a[n];

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部