c++中const T*、T* const和const T* const的区别_c++指针与常量修饰的详细解析

const修饰指针时分三种:const T 指针可变数据不可变,T const 指针不可变数据可变,const T* const 指针和数据都不可变,从右向左读声明可助理解。

c++中const t*、t* const和const t* const的区别_c++指针与常量修饰的详细解析

在C++中,const关键字与指针结合使用时,容易让人混淆。关键在于理解const修饰的是什么:是指针本身?还是指针所指向的数据?下面通过三种常见形式详细解析:const T*T* constconst T* const

const T* — 指向常量的指针(指针可变,数据不可变)

这种写法表示指针指向的数据是常量,不能通过该指针修改值,但指针本身可以改变指向。

说明: const T* 等价于 T const *const 修饰的是 * 操作的结果,也就是指向的内容
示例:const int* ptr = &a;:ptr 可以指向其他变量,但不能通过 ptr 修改 a 的值。*ptr = 10; ❌ 错误:不能修改指向的值。ptr = &b; ✅ 正确:可以更改指针的指向。

T* const — 常量指针(指针不可变,数据可变)

这种写法表示指针本身是一个常量,即初始化后不能再指向别的地址,但可以通过它修改所指向的数据。

说明: const 修饰的是指针变量本身,指针的值(地址)不能变
示例:int* const ptr = &a;:ptr 必须初始化,之后不能再指向其他变量。*ptr = 10; ✅ 正确:可以修改 a 的值。ptr = &b; ❌ 错误:不能改变 ptr 的指向。

const T* const — 指向常量的常量指针(指针和数据都不可变)

这是前两种情况的组合:指针本身不能变,指向的数据也不能通过该指针修改。

立即学习“C++免费学习笔记(深入)”;

说明: 两个限制同时存在,既不能改地址,也不能改值
示例:const int* const ptr = &a;*ptr = 10; ❌ 错误:不能修改数据。ptr = &b; ❌ 错误:不能修改指针。

基本上就这些。记住一个简单方法:从右往左读声明。比如 const T* const ptr 就是 “ptr 是一个 const 指针,指向一个 const T”。理解了这一点,指针和 const 的组合就不再难懂。不复杂但容易忽略细节。

以上就是c++++中const T*、T* const和const T* const的区别_c++指针与常量修饰的详细解析的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1484378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 08:02:38
下一篇 2025年12月19日 08:02:54

相关推荐

发表回复

登录后才能评论
关注微信