zuojiankuohaophpc++np>c++中const与指针结合时,关键在于const的位置:const在左边修饰数据,表示“常量指针”(如const int ptr),指针可变但不能修改所指向的值;const在右边修饰指针本身,表示“指针常量”(如int const ptr),指针不可变但可修改所指向的值;若两边都有const(如const int* const ptr),则指针和数据均不可变,必须在声明时初始化,适用于需要严格保护的场景,理解时可依据“左定值,右定向”口诀快速判断。</p>

在C++中,
const
const
下面我们来详细解释:
定义:指针可以指向不同的地址,但不能通过该指针修改所指向的数据。
语法形式:
const int* ptr; // 或 int const* ptr;
这两种写法是等价的,都表示“指向常量整数的指针”。
特点:
ptr
示例:
int a = 10; int b = 20; const int* ptr = &a; // *ptr = 30; // 错误!不能通过ptr修改a的值 ptr = &b; // 正确!ptr可以指向b
关键点:
const
*
const
*
定义:指针本身是一个常量,即指针的指向不能改变,但可以修改它所指向的数据。
语法形式:
int* const ptr = &some_variable;
特点:
示例:
int a = 10; int b = 20; int* const ptr = &a; *ptr = 30; // 正确!可以修改a的值 // ptr = &b; // 错误!ptr不能改变指向
关键点:
const
*
定义:指针本身不能改变,指向的数据也不能通过该指针修改。
语法形式:
const int* const ptr = &a;
特点:
示例:
int a = 10; int b = 20; const int* const ptr = &a; // *ptr = 30; // 错误!不能修改值 // ptr = &b; // 错误!不能修改指针指向
适用场景:用于保护数据和指针本身,常用于函数参数中防止误操作。
记住这个简单规则:
const
*
const
*
const
例子分析:
| 声明 | 含义 |
|---|---|
| @@######@@ | 数据是常量,指针可变(常量指针) |
| @@######@@ | 同上(等价写法) |
| @@######@@ | 指针是常量,数据可变(指针常量) |
| @@######@@ | 数据和指针都是常量 |
“常量指针” vs “指针常量”命名容易混淆:
const int* ptr
int const* ptr
初始化要求:
int* const ptr
函数参数中的使用:
const int* const ptr
基本上就这些。理解的关键是分清
const int*
int* const
int* const ptr
void func(const int* ptr); // 防止函数内修改数据 void func(int* const ptr); // 指针不能变,但数据可改(较少用) void func(const int* const ptr); // 最严格保护
const
*
*
以上就是const指针和指针const区别 常量指针与指针常量详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号