永发信息网

const定义的数组为什么编译后在代码段,而不

答案:1  悬赏:80  手机版
解决时间 2021-12-31 08:53
const定义的数组为什么编译后在代码段,而不
最佳答案
并不是所有的常量都可以用来定义一个数组的初始大小,在C程序中,只有C语言的常量表达式才能用来定义一个数组的初始大小。然而,在C++中,情况有所不同。
一个常量表达式的值在程序运行期间是不变的,并且是编译程序能计算出来的一个值。在定义数组的大小时,你必须使用常量表达式,例如,你可以使用数字:
char a[512];
或者使用一个预定义的常量标识符:
#define MAX 512

char a[MAX];
或者使用一个sizeof表达式:
char a[sizeof(structcacheObject)];
或者使用一个由常量表达式组成的表达式:
char buf[sizeof(struct cacheObject) *MAX];
或者使用枚举常量。
在C中,一个初始化了的constint变量并不是一个常量表达式:
int max=512;
char buffer[max];
然而,在C++中,用const int变量定义数组的大小是完全合法的,并且是C++所推荐的。尽管这会增加C++编译程序的负担(即跟踪const int变量的值),而C编译程序没有这种负担,但这也使C++程序摆脱了对C预处理程序的依赖。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
现在,香港的6P卖多少钱了? 7出来以后大概?
我的7佛珠任务怎么完不成,我的子任务先做后6
海淀区西三旗派出所办公地址在什么地方?我要
苹果怎么恢复以前用的手机壁纸
fifaonline3古力特打什么位置好
下表是某超市2009年各季度营业额统计表:季度
检察院能抗诉已生效判决两年后的法院判决书吗
一般来开钢化炉工资大概是多少
海淀区红山口派出所地址有知道的么?有点事想
我的未来网靠什么赚钱
工行手机银行怎么关闭
湖北中国移动客户。我想保持移动的号是通的.
单选题用计算器计算12639+6087=A.18716B.1872
英雄无敌3里的那些探险魔法怎么用
海淀区马连洼派出所地址有知道的么?有点事想
推荐资讯
若x=(根号7减根号5)除以2,y等于(根号7加根
①蜜蜂是不能单独生活而必须过群体生活的昆虫
性价比高的近义词
博士伦哪款隐形眼镜比较好?年抛还是日抛?
我想给我妹妹起名字请高人帮帮我
奥黛丽赫本和费雯丽哪个漂亮?
在农村大年三十的时候,正间屋子墙上挂的叫什
电动车拔了钥匙,滴滴响三声是怎么回事
二手空调美的用了两年的价格一般多少
松阳县老年人体育协会办公地址在什么地方?我
科目三不会控制油门是不是考不过
捡到小米手环如何解绑
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?