目录
const 是什么?
const是constant的缩写,意为常量,恒量,不变的,
用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。
const 干什么的?
1.修饰普通类型的变量
int m = 0;
const int n = 0;
m = 20; // 可修改
n = 21; // 不可以修改
其中 m 可以修改,n报错
n原本是一个变量,在前面加上const之后,变成了一个常量,没有办法直接给n赋值(但是我们可以利用我们之前学的指针给n赋值)。
const int n = 0;
printf("%d\n",n);
int *p = &n;
*p = 20;
printf("%d\n",n);
如上,既然没有办法直接给n赋值,我们就绕过n,得到n的地址,通过n的地址给n赋值。
2.修饰指针变量
根据之前的内容我们是通过绕过n,得到n的地址,通过n的地址给n赋值的;使用的是指针,那我们给指针添加上const和修饰普通变量的使用方法一样嘛?
答案是有相似之处也有不一样的地方。
const int *p1 = 6; // yi
int * const p2 = 8; // er
const int * const p3 = 10; // san
yi 指针指向的内容 6 不可改变。简称左定值,因为 const 位于 * 号的左边。
er 对于 const 指针 p 其指向的内存地址不能够被改变,但其内容可以改变。简称,右定向。因为 const 位于 * 号的右边。
san 这时,const p 的指向的内容和指向的内存地址都已固定,不可改变。