跳到主要内容

解释C++常量指针和指针常量?

参考答案:

在C++中,常量指针和指针常量是两个容易混淆的概念。理解它们的关键在于理解const关键字的作用位置。

  1. 常量指针(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指向的地址
  1. 指针常量(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++中使用指针和常量。