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

在C++中,const关键字与指针结合使用时,容易让人混淆。关键在于理解const修饰的是什么:是指针本身?还是指针所指向的数据?下面通过三种常见形式详细解析:const T*、T* const 和 const T* const。
这种写法表示指针指向的数据是常量,不能通过该指针修改值,但指针本身可以改变指向。
说明:const T* 等价于 T const *,const 修饰的是 * 操作的结果,也就是指向的内容。const int* ptr = &a;:ptr 可以指向其他变量,但不能通过 ptr 修改 a 的值。*ptr = 10; ❌ 错误:不能修改指向的值。ptr = &b; ✅ 正确:可以更改指针的指向。这种写法表示指针本身是一个常量,即初始化后不能再指向别的地址,但可以通过它修改所指向的数据。
说明:const 修饰的是指针变量本身,指针的值(地址)不能变。int* const ptr = &a;:ptr 必须初始化,之后不能再指向其他变量。*ptr = 10; ✅ 正确:可以修改 a 的值。ptr = &b; ❌ 错误:不能改变 ptr 的指向。这是前两种情况的组合:指针本身不能变,指向的数据也不能通过该指针修改。
立即学习“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++指针与常量修饰的详细解析的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号