C++中的const的用法
程序员文章站
2022-04-02 23:11:07
C语言中的const并不是真正意义上的const,C语言中const变量是只读变量,有自己的存储空间,在C语言中,仍然可以通过间接赋值修改a的值。 实际上,在C++语言中,const建立的是一个符号表。用指针间接赋值的时候,会重新开辟一块内存空间,间接修改a的值只是修改了,新开辟的内存空间的值,和原 ......
1 const int a; 2 int const b; //一样 3 // 4 const int *c; //const修饰的是指针所指向的内存空间d的数据,不能被修改 5 int * const d; /*d 常指针(指针变量不能被修改(d不能乱指),但是它所指向内存空间可以被修改)*/ 6 const int * const e ;//指针和它所指向的内存空间,均不能被修改
C语言中的const并不是真正意义上的const,C语言中const变量是只读变量,有自己的存储空间,在C语言中,仍然可以通过间接赋值修改a的值。
void main() { //好像 a 是一个常量 const int a = 10; //a = 11; int *p = NULL; p = (int *)&a; *p = 20; //间接赋值 printf("a:%d \n", a); printf("*p:%d \n", *p); system("pause"); }
实际上,在C++语言中,const建立的是一个符号表。用指针间接赋值的时候,会重新开辟一块内存空间,间接修改a的值只是修改了,新开辟的内存空间的值,和原来的符号表中的a的值没有任何关系。
所以C++中的const才是真正意义上的const
C++中的const修饰的,是一个真正的常量,而不是C中变量(只读)。在const修饰的常量编译期间,就已经确定下来了。
上一篇: 苹果新专利曝光:果然是猜测的增强现实技术
下一篇: 山西成立物联网学院,加速人才培养
推荐阅读