hiter727 2016-08-09 10: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 11:15
    关注

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

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

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器