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

来源:互联网 发布:python创建临时文件夹 编辑:程序博客网 时间:2024/06/15 22:09

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

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

//const.cint main(){     const int a = 100;     int arr[a];//error     printf("%d\n",sizeof(arr));     return 0;}/*总结:在c中,const是指不能被改变的变量,占有存储空间,所以编译器并不知道编译时的值,所以不知道该给数组定义多大的,而且数组定义时的下标必须为常量*///const.cppint main(){     const int a = 10;     int arr[a]; //ok     cout<<sizeof(arr)<<endl;     return 0;}/****总结:C++中的const可以看成是编译期的常量,编译器先不给它分配空间,只是在编译的时候把它的值保存在名字表中,所以在定义数组时,已经可以知道它的值了,但是如果加上关键字extern或者取其地址,则会分配空间。*/


阅读全文
0 0
原创粉丝点击