常量指针与指针常量,一般出现在函数的参数里面,传参的过程中。
- 常量指针(存放常量的地址的指针)
int num = 10;
int num2 = 18;
const int * p1 = # // 等价于 int const * p1 = #
//*p1 = 24; //不能修改指向位置的值。
p1 = &num2; //可以修改指针的指向
const 修饰的是数据,而不是指针。
有个名字叫做p1的指针, 它存放一个常量数据的地址,这个数据和地址绑定,不能修改地址对应的值,但是p1指针可以存放其他同类型数据的地址。
- 指针常量
int * const p2 = #
*p2 = 36; //能修改指向位置的值
//p2 = &num2; // 不能修改指针的指向
const 修饰的是指针,而不是数据。
有个名字是p2的指针,它是一个常量,它指向一份数据(存放该数据的地址),这份数据是一份int类型数据。
指针p2存放的是固定地址,但该地址和地址上的数据没有绑定,所以数据可以变化。
- 存放常量地址的指针常量
const int * const p3 = #
//*p3 = 48; //不能修改指向位置的值
//p3 = &num2; //不能修改指针的指向
const 一边修饰的是指针,又一边修饰的是数据。
有个名字叫做p3的指针常量, 它存放一个常量数据的地址。
指针常量p3存放的是固定地址,该固定地址又和数据绑定,故既不能修改指针的指向,也不能修改指向位置的值。