在学习 C++指针常量 和 常量指针 的过程中,很多初学者常常感到困惑。其实,只要掌握 const 关键字在指针声明中的位置规则,就能轻松区分它们。本文将用通俗易懂的方式,带你彻底搞懂 C++ const指针 的两种形式,并通过示例代码加深理解。

常量指针是指指向的内容不能被修改,但指针本身可以指向其他地址。换句话说,你不能通过这个指针去改变它所指向的值。
语法格式如下:
const int* ptr; // 或者写成 int const* ptr;来看一个具体例子:
#include <iostream>using namespace std;int main() { int a = 10; int b = 20; const int* ptr = &a; // 常量指针:不能通过ptr修改a的值 cout << "*ptr = " << *ptr << endl; // 输出:10 // *ptr = 30; // ❌ 错误!不能修改指向的内容 ptr = &b; // ✅ 正确!可以指向其他变量 cout << "*ptr = " << *ptr << endl; // 输出:20 return 0;}在这个例子中,ptr 是一个常量指针,它指向的内容(即 *ptr)是只读的,但 ptr 本身可以重新赋值,指向 b。
指针常量是指指针本身的地址不能改变,但可以通过该指针修改它所指向的值。也就是说,一旦初始化后,它不能再指向别的变量。
语法格式如下:
int* const ptr = &variable;来看一个例子:
#include <iostream>using namespace std;int main() { int a = 10; int b = 20; int* const ptr = &a; // 指针常量:ptr不能再指向其他地址 *ptr = 30; // ✅ 正确!可以修改指向的内容 cout << "a = " << a << endl; // 输出:30 // ptr = &b; // ❌ 错误!ptr是常量,不能重新赋值 return 0;}这里,ptr 被初始化为指向 a,之后就不能再让它指向 b。但你可以通过 *ptr = 30 来修改 a 的值。
你也可以同时使用两个 const,使得指针既不能修改指向的内容,也不能改变指向的地址:
const int* const ptr = &a;此时:
ptr 修改 a 的值(*ptr = 100; ❌)ptr 指向其他变量(ptr = &b; ❌)记住一个简单规则:从右往左读声明。
const int* ptr → ptr 是一个指针,指向 const int(常量指针)int* const ptr → ptr 是一个常量,类型是 int*(指针常量)这种阅读方式能帮助你快速判断 const 修饰的是谁。
- 常量指针(const int*):值不可改,指针可变。
- 指针常量(int* const):指针不可变,值可改。
- 同时使用两个 const 可实现完全只读。
掌握 指针与const关键字 的组合用法,不仅能写出更安全的 C++ 代码,还能在面试和项目开发中游刃有余。希望这篇教程能帮你彻底理清 C++指针常量 与 常量指针 的区别!
本文由主机测评网于2025-12-18发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025129608.html