const关键字在C和C++区别
2014-02-28 20:25
204 查看
1)C++默认为内部链接;C默认为外部链接
2)在C++中,一般一个const不会创建内存空间,而是将其保存在符号表(待看)。比如:
这里无需为const创建内存空间,进行完类型检查之后,值会折叠到代码中。
但也有为const分配内存的时候。如取一个const的地址或者把它定义为extern等。
另外,const用于集合的时候,也会分配内存
C中,一个const总是需要创建存储空间的。其义为:一个不能被改变的普通变量。
C++中当定义一个const时,必须赋值给它,除非用extern做了说明。
2)在C++中,一般一个const不会创建内存空间,而是将其保存在符号表(待看)。比如:
const int bufsize = 100; char buf[bufsize];
这里无需为const创建内存空间,进行完类型检查之后,值会折叠到代码中。
但也有为const分配内存的时候。如取一个const的地址或者把它定义为extern等。
#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; }
另外,const用于集合的时候,也会分配内存
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;//强迫给它分配内存。
C中,一个const总是需要创建存储空间的。其义为:一个不能被改变的普通变量。
const int bufsize = 100; char buf[bufsize];//会有error。因为bufsize占用某块内存,所以编译器并不知道其值。
const int bufsize;//这个是可以的;作为一个申明。
C++中当定义一个const时,必须赋值给它,除非用extern做了说明。
extern const int bufsize;//同上的意思。
相关文章推荐
- C语言与C++中static,const 关键字的区别
- C和C++中const关键字的区别
- C++和C语言const区别关键字总结
- C++面试_堆栈的区别_堆栈的访问效率_关键字static的作用是什么_关键字const有什么含意
- 详解C++中的const关键字及与C语言中const的区别
- c++中使用const关键字的联系区别
- C++知识点总结(上):指针和引用,static关键字,const关键字,malloc\free和new\delete的区别等
- C++带const、static和#define关键字的变量定义的区别
- const在C和C++中的区别
- C/C++中关键字static,const,inline,define,typedef的用法及其意义
- 关键字static和const的作用以及它们的区别
- C/C++中static,const,inline三种关键字详细总结
- c++ const关键字
- C与C++在const用法上的区别
- C++中define与const的区别
- C++中static_cast、const_cast、reinterpret_cast的用法举例,附带举例说明强制类型转换时int和int&的区别
- C++const 关键字小结
- C++中const在函数名前面和函数后面的区别
- C/C++中const关键字详解
- C++中成员变量加上static或const关键字后的分析