- 常量指针 和 指针常量的区别:
- * (指针)和 const(常量) 谁在前先读谁 ;
- *象征着地址,const象征着内容;谁在前面谁就不允许改变。
-
int a =3; int b = 1; int c = 2; int const *p1 = &b;//const 在前,定义为常量指针 int *const p2 = &c;//*在前,定义为指针常量
说明:
- 常量指针p1:指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换。
- p1 = &a是正确的,但 *p1 = a是错误的。
- 指针常量p2:指向的地址不可以重新赋值,但内容可以改变,必须初始化,地址跟随一生。
- p2= &a是错误的,而*p2 = a 是正确的。
- 常量指针p1:指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换。
常量指针:
- 定义:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针。
- 注:可以将一个常量的地址赋值给一个对应类型的常量指针,因为常量指针不能够通过指针修改内粗数据。只能防止通过指针引用修改内存中的数据,并不保护指针所指向的对象。
- 声明:const int * p; int const * p;
指针常量
- 定义:指针常量是指指针所指向的位置不能改变,即指针本身是一个常量,但是指针所指向的内容可以改变。
- 注:指针常量必须在声明的同时对其初始化,不允许先声明一个指针常量随后再对其赋值,这和声明一般的常量是一样的。
- 声明:int * const p=&a;
参考:https://blog.csdn.net/Beyond0525/article/details/7409305
https://blog.csdn.net/weibo_dm/article/details/80445205