常量指针和指针常量
# 常量指针和指针常量
Created: March 18, 2024 10:38 AM
在C++中,常量指针(Constant Pointer)和指针常量(Pointer to Constant)是两种不同的概念,它们涉及到指针和常量的组合使用方式。理解它们的区别是理解C++指针和常量使用的重要部分。
# 常量指针(Pointer to Constant)
常量指针指向一个常量值,你不能通过这个指针来修改其指向的值,但是指针本身的指向是可以改变的。换句话说,你不能通过这个指针来改变它指向的对象的值,但你可以改变指针指向另一个对象。
语法:
cppCopy code
const 类型名* 指针名;
1
2
3
2
3
示例:
cppCopy code
const int* ptr; // ptr是一个指向常量整数的指针
int value = 5;
int newValue = 10;
ptr = &value; // 合法
//*ptr = 10; // 非法,不能通过ptr修改value的值
ptr = &newValue; // 合法,ptr可以改变指向
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 指针常量(Constant Pointer)
指针常量是一个指针,它的指向(即存储的地址)不可改变,但是你可以通过这个指针来修改它所指向的对象的值。一旦指针常量被初始化,它就不能再指向另一个对象。
语法:
cppCopy code
类型名* const 指针名;
1
2
3
2
3
示例:
cppCopy code
int value = 5;
int* const ptr = &value; // ptr是一个常量指针,指向value
*ptr = 10; // 合法,可以通过ptr修改value的值
int newValue = 15;
//ptr = &newValue; // 非法,ptr不能改变指向
1
2
3
4
5
6
7
2
3
4
5
6
7
# 常量指针常量(Constant Pointer to a Constant)
此外,还有一种组合是既不能通过指针修改所指向对象的值,也不能改变指针的指向。
语法:
cppCopy code
const 类型名* const 指针名;
1
2
3
2
3
示例:
cppCopy code
int value = 5;
const int* const ptr = &value; // ptr是一个指向常量的常量指针
//*ptr = 10; // 非法,不能通过ptr修改value的值
int newValue = 15;
//ptr = &newValue; // 非法,ptr不能改变指向
1
2
3
4
5
6
7
2
3
4
5
6
7
理解这些概念有助于更准确地控制你的数据和指针行为,尤其是在涉及API设计和数据保护时。
编辑 (opens new window)