C++中指针常量与常量指针的区别及声明用法
理解 C++ 指针的核心在于掌握 const 关键字的位置。本文详细对比指针常量与常量指针的概念、声明语法及实际操作差异,通过直观的代码示例说明如何通过修改指针自身或指针指向的值来验证二者特性。
核心概念解析
要区分这两者,需先明确:指针是存储内存地址的变量,常量是值不可变的量。const 的作用是限制修改权限。
- 指针常量:指针本身是常量。即指针存储的地址固定不变,但该地址对应的内存值可通过指针修改。
- 常量指针:指向常量的指针。即指针可改变指向其他地址,但通过该指针无法修改所指向的内容。
声明规则与技巧
第1步:识别 const 的位置
区分的关键在于 const 位于 * 的哪一侧:
Type * const ptr:const在*右侧,修饰指针变量本身,表示指针常量。Type const * ptr:const在*左侧,修饰类型(数据),表示常量指针。
第2步:牢记“右左法则”简化记忆
从变量名开始往右看,遇到 const 则不能改,遇到 * 则是指针。例如 int * const p,从 p 向右看到 const,说明 p 不能改;向左看到 *,说明 p 是指针。
代码操作与验证
第3步:验证指针常量行为
指针常量在声明时必须初始化,且初始化后地址不可变更,但内容可改。
/* 指针常量的例子 */
int a = 10, b = 20;
int * const p = &a; // 必须赋初始值
// p = &b; // ❌ 错误:试图修改指针常量的地址
*p = 20; // ✅ 正确:修改指针指向的值
第4步:验证常量指针行为
常量指针可以更换指向,但严禁通过该指针修改目标值。
/* 常量指针的例子 */
int a = 10, b = 20;
const int *p = &a; // 或者 int const *p = &a;
p = &b; // ✅ 正确:更改指针指向
// *p = 20; // ❌ 错误:试图通过常量指针修改内容
第5步:组合使用常量指针常量
当需要同时禁止修改地址和修改内容时,使用常量指针常量。
int a = 10;
const int * const p = &a;
// p = &b; // ❌ 错误:不能改指针地址
// *p = 20; // ❌ 错误:不能改指向内容
总结
通过上述对比可见,指针常量重在“保地址”,常用于确保遍历范围或特定引用的固定性;常量指针重在“保内容”,常用于只读访问防止误修改。掌握 const 的位置分布规律,即可准确编写规范的 C++ 指针代码。
以上就是C++中指针常量与常量指针的区别的详细内容,更多关于C++指针编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













