const关键字在C语言中用来修饰变量,表示该变量(对象)是常量。
const修饰的变量理论上不应该再被修改,但是非要去修改的话也不是不可以,但是尽量别瞎搞
const修饰普通变量
无论是
还是const int a;
修饰的主角都只有一个:a,int const a;
所以const修饰普通变量没什么可混淆的,都是指该普通变量是常量
const修饰指针
一般有4种形式:(前方高能,请深呼吸)
① const int *p;
② int const *p;
③ int * const p;
④ const int * const p;
如果看下来还保持清醒的话,请退出该页面,这篇文章到此结束谢谢。
别看这些看起来有些相似,其实核心就是两点:
1)指针p涉及的两个变量:
1️⃣ 指针变量p本身 ( p )
2️⃣ p指向的那个变量 (*p)
2)一个const关键字 只能够修饰一个变量
现在我们再来看刚刚的4个表达式,其中:
① 和 ② 等价:
没有分辨出来吗?那把*p用()括起来看看,是不是和const修饰普通变量a时的情况一模一样,
此时const修饰的是*p,所以*p是常量,即p指向的对象是常量
而p本身没有被修饰,所以p可变
③ const修饰的是p,
所以p是常量 不可变,
p指向的对象没有被修饰,是可变的
④ 是前面两种情况的结合
有两个const,一个修饰p,一个修饰*p
就是这样,关键就是那两点,弄清楚了妈妈再也不怕你分不清了。