const定义的变量,可以作为数组[ ]里面的值吗?

结论: 在c中是不可以的,在c++中可以。

证明:C++编译器把Const对象放在了符号表之中,C语言一般是放在只读数据区。【为什么C++编译器这么做?我想一个原因就是减少一些存储操作次数】。

//const.c
int main()
{
     const int a = 100;
     int arr[a];//error
     printf("%d\n",sizeof(arr));
     return 0;
}
/*总结:
在c中,const是指不能被改变的变量,占有存储空间,所以编译器并不知道编译时的值,
所以不知道该给数组定义多大的,而且数组定义时的下标必须为常量*/

//const.cpp
int main()
{
     const int a = 10;
     int arr[a]; //ok
     cout<<sizeof(arr)<<endl;
     return 0;
}
/*
***总结:
C++中的const可以看成是编译期的常量,编译器先不给它分配空间,只是在编译的时候把它的值保存在名字表中,
所以在定义数组时,已经可以知道它的值了,但是如果加上关键字extern或者取其地址,则会分配空间。
*/


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值