#include <stdio.h>
#include <stdlib.h>
int a[9] = {0,0,0,0,0,0,0,0,0,};
int b;
int main(void)
{
int const* pa = a;
const int* pb = a;
int* const pc = a;
int bb = pa[0];
pa[0] = 1; // 报错
pb[1] = 2; // 报错
pc[2] = 3;
pc = &b; // 报错
printf("%d", bb);
return EXIT_SUCCESS;
}
实践是检验真理的唯一标准。
pa 和 pb是一样的,为常量指针。const 均修饰指针指向的内容,即表明该指针对指向的内容没有修改权限。但它本身可以改变指向。更应该称其为“只读指针”,具有一定安全性。
pc是指针常量。表明pc一旦被初始化,不能改变指向。在C++中,引用的实现基于此。
帮助记忆:
- 一般使用 pa 和 pc 的两种形式,即 “ * ” 在const左右两边。
- 若 const 修饰 p 就是指针常量,指针本身是常量,不能改值;
- 若 const 修饰 *p 就是常量指针(只读指针),其解引用不能改值。