C++中的const的用法
程序员文章站
2022-07-04 20:46:59
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修饰的常量编译期间,就已经确定下来了。
推荐阅读
-
EditPlus中的正则表达式中英文使用详解(附常用实例)
-
怎么让网页自动翻译? 在IE浏览器中实现网页自动翻译的方法
-
PowerDesigner 建立与SQLSERVER 2005数据库的连接以便生成数据库和从数据库生成到PD中
-
VS2012中通过IIS发布站点的步骤分享
-
windows系统中OneDrive无法打开登陆不了的解决办法
-
RubyMine编辑器中安装CoffeeScript和CoffeeScriptRedux的方法
-
PowerDesigner 建立与数据库的连接以便生成数据库和从数据库生成到PD中(Oracle 10G版)
-
MyEclipse中配置struts.xml自动提示的方法
-
ProE投影曲线中投影链怎么创建? ProE创建投影链的教程
-
Visual Studio中11个强大的调试技巧和方法