const 与指针变量的结合主要有3种情况:常量指针、指针常量及两者的结合。
常量指针:指向常量的指针,顾名思义,就是指针指向的变量是一个常量,也就是指针指向的地址中的内容不能修
改。当然这样的指针也是可以指向变量的,而且很多时候我们都是这么做的。在类中,尤其是对一个对象进行读操作
时,一般我们都希望不改变它的值,但我们有时却还需要通过别的函数对这个对象进行写操作。这时将这个对象声明
为一个变量而不是常量,然后将只对其进行读操作的函数形参设为常量指针,这样就可以协调的实现不同函数对其的
操作而不出现混乱。
常量指针的声明方式有两种:
- #include<stdio.h>
- int main()
- {
- int a = 10;
- const int* p1 = &a;
- int const* p2 = &a;
- return 0;
- }
值。
指针常量:指针本身就是一个常量,也就是说指针指向的地址是不可改变的。而常量指针是可以改变其指向的地址
的。但是指针常量却可以改变其指向地址里的内容。
- #include<stdio.h>
- int main()
- {
- int a = 10;
- int b = 100;
- const int* p1 = &a;
- int* const p2 = &a;
- p1 = &b; //正确,常量指针可以改变其指向的地址
- p2 = &b; //错误,指针常量不可以改变其指向的地址
- *p1 = 25; //错误,常量指针不可以改变其指向地址里的内容
- *p2 = 25; //正确,指针常量可以改变其指向地址里的内容
- return 0;
- }
指针常量的声明方式如下:
- #include<stdio.h>
- int main()
- {
- int a = 10;
- int* const p = &a;
- return 0;
- }
第三种 const与指针的结合的声明方式如下:
#include<stdio.h>
int main()
{
int a = 10;
const int* const p = &a;
return 0;
}
从其声明的方式也可以看成这是前两种结合方式的联合体。也就是说这种指针同时具有常量指针和指针常量的限制,
即这种指针即不能修改其指向的地址也不能修改其指向地址里的内容。