您现在的位置是:亿华云 > 系统运维
EasyC++,Const和指针
亿华云2025-10-09 01:24:03【系统运维】2人已围观
简介大家好,我是梁唐。这是EasyC++系列的第28篇,简单聊聊const和指针。指针和const我们知道const关键字修饰的是不可变量,将它和指针一起使用,会有很多微妙的地方。关于使用const来修饰
大家好,我是梁唐。
这是EasyC++系列的第28篇,简单聊聊const和指针。
指针和const
我们知道const关键字修饰的是不可变量,将它和指针一起使用,会有很多微妙的地方。
关于使用const来修饰指针,有两种不同的方式。第一种是让指针指向一个常量对象,这样可以防止使用该指针进行修改指向的值。第二种则是将指针本身声明为常量,可以防止改变指针指向的位置。下面我们来看下细节。
指向常量的指针
首先是指向常量的指针,含义是指针的类型是源码库一个常量类型。所以写成:
const int * p;可以理解成p是一个指针,它的类型是const int,也就是常量类型。它既可以用来指向一个常量类型,也可以指向一个非常量类型,下方的这两种方式都是合法的:
int age = 23; const int* p = &age; const double price = 233; const double* pt = &price;但是反过来,将一个const类型的变量赋值给一个非const的指针是非法的:
const int age = 23; int* p = &age; // 非法如果非要这样做,可以使用const_cast运算符进行强制转换,这个我们会在之后的文章当中讨论。
另外还有一个很有意思的点,如果我们将一个非const类型的变量赋给了const类型的指针,虽然我们无法通过指针修改对应的值,但是免费信息发布网通过变量修改却是可以的:
int age = 23; const int* p = &age; *p = 233; // 非法 age = 233; // 合法还有,我们无法修改指针指向的值,但是修改指针指向的位置是可以的:
int age = 23; int price = 233; const int* p = &age; p = &price;const指针
上面我们介绍了指向const的指针,还有另外一种指针叫做const指针。const指针指的是指针本身是const修饰的,我们无法修改指针指向的位置。
int age = 23; int* const p = &age;但是我们修改指针指向的值是可以的:
*p = 2333; // 合法指针和内容都不可变。
当然我们也可以将两种const叠加使用,让指针指向的对象以及对象的值都不可修改:
const int * const p = &age;本文转载自微信公众号「Coder梁」,可以通过以下二维码关注。转载本文请联系Coder梁公众号。
很赞哦!(71)
上一篇: 个人域名转为公司需要什么条件?个人域名转为公司该怎么做?
下一篇: 四、配置网站,填充内容
热门文章
站长推荐
当投资者经过第二阶段的认真学习之后又充满了信心,认为自己可以在市场上叱咤风云地大干一场了。但没想到“看花容易绣花难”,由于对理论知识不会灵活运用.从而失去灵活应变的本能,就经常会出现小赢大亏的局面,结果往往仍以失败告终。这使投资者很是困惑和痛苦,不知该如何办,甚至开始怀疑这个市场是不是不适合自己。在这种情况下,有的人选择了放弃,但有的意志坚定者则决定做最后的尝试。
你知道MySQL主从复制的原理吗?
域名历史重不重要?如何查询域名历史信息?
top域名好申请吗?top域名注册价格是多少?
在更换域名后,并不是就万事大吉了,我们需要将旧域名做301重定向到新域名上,转移旧域名的权重到新域名上。
ip查看域名怎么操作?
Istio 可以代替 Spring Cloud 吗?
中国香港域名购买去哪里?价格高不高?