指针常量与常量指针【C++】
常量指针:const int* (int const*)
一个指针,指向的内容是一个常量,内容不能修改,但指针本身可修改。修改内容时,编译器报错" error: assignment of read-only location ... "
指针常量: int * const
一个常量,常量本身是一个指针,指针本身不能修改,但指针内容可修改。修改指针时,编译器报错" error: assignment of read-only location ... "
如果需要一个指针和指向内容皆为常量,不能更改,可以定义为: const int* const
const int const* 为错误语法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int a = 0; 7 int b = 10; 8 int const* p = &a; // 常量指针 9 // 修改指针内容,报错 10 *p = 5; 11 12 const int* q = &b; // 等价int const* 13 p = q; 14 q = &a; 15 16 int* const w = &a; 17 // 指针常量,报错 18 w = &b; 19 *w = b; 20 21 const int* const u = w; 22 // 修改地址和内容都报错 23 u = p; 24 *u = 0; 25 26 return 0; 27 }