1、const对指针的理解和应用
请问下列表达式哪些会被编译器禁止【多选】()
int a = 248, b = 4;
int const *c = 21;
const int *d = &a;
int *const e = &b;
int const * const f = &a;
A: *c = 32; B:*d = 43 C:e=&a D:f=0x321f
🙊 本题主要考点:“const对指针的理解和应用”
在解题前,让我们先了解了解const对指针的作用是什么❓
*1️⃣const如果在指针变量的 的左边【即 const int * a == int const * a】:
➡️表达的意思是: 对指针变量a 解引用的值是保持不变的
只有a里面存放的地址改变了,解引用出来的值才会变化
*2️⃣const如果在指针变量的 “ * ” 的右边【即 int * const a】
➡️ 表达的意思是: a里面存放的地址是保持不变
只有主动对 a 赋值才能改变这个值,但a里面的地址是一直保持不变的
经过以上了解后,我们再看回题目:
如果 const 位于 * 的左侧,则 const 就是用来修饰指针所指向的变量,即指针指向为常量
所以上题中的:*c 和 *d 不能变
如果 const 位于 * 的右侧,则 const 就是修饰指针本身,即指针本身是常量
所以上题中的: e和f的地址不能被改变
综上:A选项想改变*c的值就错了,B选项同理;e和f的地址不能被改变,所以C选项和D选项都错啦~
————————————————