首先明确两个概念:
指针是一个变量,这个变量指向一个内存地址,这个变量的值就是这个地址,访问这个地址(*p),即可得到指针指向的内容
在C/C++里,变量名前面的,除修饰符外,都是变量类型
一般const修饰指针,常见的就下面两种形式:
int * const p1;
int const * p2;
- 此时P1是一个常量指针,const修饰的是P1这个变量的类型
int *
,常量指针的指向不可变,即P1存储的地址不允许更改,但可以更改P1指向的这个地址里的内容,即P1不可变,*P1可变 - 此时P2是一个指针常量,const修饰的是P2这个变量指向的地址内的数据类型,即修饰的是*P的值,所以指针常量的指向可以变,指针指向的地址里的内容不可变,即P2可变,*P2不可变