const 是可以声明常量的,声明之后不能被修改。
对于一个指针和一个数组,我们有三种const 的形式
即
const 指针的指向 这个指针不能指向别处
指向const的指针 不能通过这个指针修改指向的值
const 变量 这个地址的值不能被修改
假设有一个数组aa[] = {1 , 2 , 3 , 4}
与一个指针p
const指针的指向
int * const p = a;
定义了一个指针变量,这个指针变量不能指向别处
即
p = p + 1;
这样的操作是不合法的
指向const的指针
const int *p = a; //现在p指向a[0]
定义了一个指针变量,我们不能通过这个指针改变当前地址所有的值
即
*p = 4;
这样的操作是非法的
但是
a[0] = 4;
这样的操作是合法的,因为这个数组没有被const限定
const 变量
我们直接将a数组定义为const
const int a[] = {1 , 2 , 3};
int *p = a;
a中的元素直接不能被修改
即
a[0] = 4;
*p = 4;
这两种操作都是不合法的
#by ChinoCarbon 2020-12-4