解释C++常量指针和指针常量?
参考答案:
在C++中,常量指针和指针常量是两个容易混淆的概念。理解它们的关键在于理解const
关键字的作用位置。
- 常量指针(Constant Pointer):
常量指针是指向常量的指针,也就是说,该指针指向的值是不能被修改的。但是,指针本身(即它所指向的内存地址)是可以改变的。
例如:
const int *p;
在上面的例子中,p
是一个指向const int
的指针。这意味着你不能通过p
来修改它所指向的值,但是你可以改变p
所指向的地址。
int a = 10;
int b = 20;
const int *p = &a;
*p = 20; // 错误!不能修改p指向的值
p = &b; // 正确!可以改变p指向的地址
- 指针常量(Pointer Constant):
指针常量是常量的指针,也就是说,该指针本身(即它所指向的内存地址)是不能被修改的,但是它所指向的值是可以被修改的。
例如:
int *const p;
在上面的例子中,p
是一个int *const
,即指向int
的常量指针。这意味着你不能改变p
所指向的地址,但是你可以通过p
来修改它所指向的值。
int a = 10;
int b = 20;
int *const p = &a;
*p = 20; // 正确!可以修改p指向的值
p = &b; // 错误!不能改变p指向的地址
总结一下:
- 常量指针:指针指向的值是常量,但指针本身不是。
- 指针常量:指针本身是常量,但指针指向的值不是。
记住这些概念和用法,可以帮助你更好地在C++中使用指针和常量。