const关键字与指针
const修饰指针有以下四种形式:
① const int *p1;
② int const *p2;
③ int * const p3;
④ const int * const p4;
常量指针
含义
①和②定义的变量优先和*结合再和const结合,本质是指针,常量修饰它,所以属于常量指针。
初始化
指针要初始化后才能使用,初始化方式有两种:
- 定义时初始化
int a = 10;
const int *p1 = &a;
int const *p2 = &a;
- 定义后初始化
int a = 10;
const int *p1;
int const *p2;
p1 = &a;
p2 = &a;
用法
指针p1和p2本身可以更改,但是指针指向的内容(*p
)不能更改,因为(*p
)被const修饰。
指针常量
含义
③和④定义的变量优先和const结合再和*结合,本质是常量,指针修饰它,所以属于指针常量。
初始化
指针要初始化后才能使用,指针常量只能在定义时初始化指针:
int a = 10;
int * const p3 = &a;
const int * const p4 = &a;
用法
p3和p4相同的地方是在初始化之后就都不能更改了;不同的地方是,p3指针指向的内容(*p3
)可以修改,p4指针指向的内容
(*p4
)不可以修改,这个地方a的值是可以随意修改的,不受指针的影响。