指针常量和常量指针
大家先不要纠结你写的代码中包含的是指针常量,还是常量指针。先理解自己的代码。
这两种声明方式的结果都是一样的,pi1和pi2都是整型指针,所谓整型指针,就是指向整数数组首地址的指针变量。其实int*和int *描述的都是某个变量,标示某个变量的属性。
这两个声明,其实结果一样,首先pid1和pid2都是指针, (*pid1)和(*pid2)都具有int属性,所以两个指针都是整型指针,有因为加了const属性,所以(*pid1)这个整数不可以被修改。
首先pid是个指针,然后修饰pid的修饰符是const,所以pid的内容不可以修改,也就是说他只能被存放一次,而且是在声明的时候初始化。
先看看这几种声明方式:
- int *pi1;
- int* pi2;
int *pi1;
int* pi2;
这两种声明方式的结果都是一样的,pi1和pi2都是整型指针,所谓整型指针,就是指向整数数组首地址的指针变量。其实int*和int *描述的都是某个变量,标示某个变量的属性。
继续往下看
- int const *pid1;
int const *pid1;
- const int *pid2;
const int *pid2;
这两个声明,其实结果一样,首先pid1和pid2都是指针, (*pid1)和(*pid2)都具有int属性,所以两个指针都是整型指针,有因为加了const属性,所以(*pid1)这个整数不可以被修改。
这个就是常量指针。
在看看下面的声明
- int * const pid;
int * const pid;
首先pid是个指针,然后修饰pid的修饰符是const,所以pid的内容不可以修改,也就是说他只能被存放一次,而且是在声明的时候初始化。
这个就是指针常量。
总结一下:
指针常量就是本身是常量的指针。
常量指针就是指向常量的指针。
其实明白了上面的解释,大家就不必在意什么常量指针,指针常量了。用对就可以了。。