首页 > 编程语言 > 详细

const关键字在C和C++区别

时间:2014-03-01 10:41:44      阅读:512      评论:0      收藏:0      [点我收藏+]

1)C++默认为内部链接;C默认为外部链接
2)在C++中,一般一个const不会创建内存空间,而是将其保存在符号表(待看)。比如:

bubuko.com,布布扣
 const int bufsize = 100;
 char buf[bufsize];
bubuko.com,布布扣

这里无需为const创建内存空间,进行完类型检查之后,值会折叠到代码中。
也有为const分配内存的时候。如取一个const的地址或者把它定义为extern等。

bubuko.com,布布扣
#include <iostream>
 const int i = 100;
 const int j = i + 10;
 long address = (long)&j;//i、j本没有被分配存储空间,但因为这里需要j的地址,故迫使编译器给j分配存储空间,但也是不能改变值的内存空间。
 char buf[j + 10];
 
 int main()
 {
 const char c = cin.get();//这里因为c的值编译期间并不知道,因此也要为它分配内存
 const char c2 = c + a;
 cout << c2;
 }
bubuko.com,布布扣

 另外,const用于集合的时候,也会分配内存

bubuko.com,布布扣
 const int i[] = {1,2,3,4};
 float f[i[3]];//编译器在编译期间为i分配了内存(集合,复杂的结构不会放在符号表中),无需知道其值,所以编译期间i[3]并不知道为何值。但定义数组的话要指定它的大小,故这里出现error。
 struct S{int i,j;};
 const S s[]={{1,2},{3,4}};
 double d[s[1].j];//同样这里也不知道s[1].j的值。出现error.
 void main(){}
 
 extern const int x = 100;//强迫给它分配内存。
bubuko.com,布布扣

 

C中,一个const总是需要创建存储空间的。其义为:一个不能被改变的普通变量。

bubuko.com,布布扣
 const int bufsize = 100;
 char buf[bufsize];//会有error。因为bufsize占用某块内存,所以编译器并不知道其值
 
 const int bufsize;//这个是可以的;作为一个申明。
bubuko.com,布布扣

 C++中当定义一个const时,必须赋值给它,除非用extern做了说明。

bubuko.com,布布扣
 extern const int bufsize;//同上的意思。
bubuko.com,布布扣

const关键字在C和C++区别,布布扣,bubuko.com

const关键字在C和C++区别

原文:http://www.cnblogs.com/diligentcalf/p/3574277.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!