在C++中,指针常量和常量指针是两个不同的概念。
指针常量是一个指针,它的值不能被修改,但是可以修改它所指向的数据。它被声明为常量,因此不能被赋予一个新的值。例如:
int x = 10;
int *const ptr = &x; // ptr是一个指向整型变量x的指针常量
*ptr = 20; // 可以修改ptr所指向的数据
// ptr = nullptr; // 错误,不能修改指针常量的值
常量指针是一个指针,它指向的数据不能被修改,但是指针的值可以被修改。例如:
int x = 10;
const int *ptr = &x; // ptr是一个指向整型变量x的常量指针
// *ptr = 20; // 错误,不能修改ptr所指向的数据
ptr = nullptr; // 可以修改指针的值
需要注意的是,这里的const关键字可以写在*的前面或者后面,它们的含义是不同的。在前面表示指向常量的指针,不能修改所指向的数据;在后面表示常量指针,不能修改指针的值。
const int *ptr1; // 指向常量的指针
int const *ptr2; // 指向常量的指针,与ptr1等价
int *const ptr3; // 常量指针
在使用指针常量和常量指针时,需要注意它们的不同点和适用场景,以避免出现错误。