指针常量(constant pointer)是指指针本身是一个常量,即指针所指向的内存地址不能被修改,但指针所指向的内存空间的值可以被修改。声明指针常量的语法如下:
int* const ptr = &n; // 声明一个指针常量,指向变量 n 的地址
上面的代码中,ptr 是一个指针常量,指向一个整型变量 n 的地址。由于 ptr 是一个指针常量,所以不能再指向其他地址,但是可以通过指针修改 n 的值。
常量指针(pointer to a constant)是指指针所指向的内存空间的值不能被修改,但是指针本身可以修改指向的地址。声明常量指针的语法如下:
const int* ptr = &n; // 声明一个常量指针,指向变量 n 的地址
上面的代码中,ptr 是一个常量指针,指向一个整型变量 n 的地址。由于 ptr 是一个常量指针,所以不能通过指针修改 n 的值,但是可以修改指向的地址,让指针指向其他内存空间。
因此,指针常量和常量指针的区别在于,指针常量是指针本身是一个常量,指针所指向的内存空间的值可以被修改;而常量指针是指针所指向的内存空间的值不能被修改,但指针本身可以被修改指向其他地址。