永发信息网

为什么用const说明的常量不能用来定义一个数组的初始大小?

答案:2  悬赏:0  手机版
解决时间 2021-02-27 02:05
为什么用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;
然而,在C++中,用const int变量定义数组的大小是完全合法的,并且是C++所推荐的。
全部回答
并不是所有的常量都可以用来定义一个数组的初始大小,在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预处理程序的依赖。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有人在带我飞上买过机票吗?出票成功了吗?
壁纸一用桌面就黑屏是为什么
河北唐山乐亭地区宽带费一年是多少钱
为什么在我们生活中每看时间的钟,都只有1~12
志顺汽车租赁地址在什么地方,想过去办事
Fate的fha线是只有游戏么,,没动漫么
工行信用卡销卡和销户的区别是什么
fort worth,texas是什么意思
孕期需要吃哪种钙片
奉化农商银行松岙支行这个地址在什么地方,我
三星手机网络出问题e有黄色剪头怎么办
吕梁志和广告我想知道这个在什么地方
魔域怎么充值最优惠?100能冲多少?
民事纠纷彩礼案二审翻案机率多大
awk 处理多个文件
推荐资讯
黄头湾地址在什么地方,想过去办事
23 46 77 116接下来是什么
360安全卫士可以和QQ安全管家一起安装吗?
战旗TV里的大酒神为什么这么受欢迎?
欧鹿生活城南门(人行门)地址在哪,我要去那里
欣苑(西南门)地址在哪,我要去那里办事
芈月传公子通最后怎么死的 公子通上吊自尽剧
化学试如何区分酸碱盐
杭州钱江新城民中心H停车场地址有知道的么?
乡味缘饭庄地址在哪,我要去那里办事
长青五巷/青田六巷(路口)地址在哪,我要去那
金帝下排烟地址在哪,我要去那里办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?