我们都知道const可以修饰常变量,这可以是我们的代码更加健壮。那么我们如何来记忆const的用法呢?下面我用一个例子来说明一下:
我是一个小偷,这天我看中一家a,a这家里有10块钱,我眼馋,就从大门进去把钱偷了,然后大摇大摆的除了门。这件事呢被b家知道了。然后b家心想:“我去,10块钱都偷了,我家里有20块钱,那下一个不就是我了。不行,我得修一修大门,换把锁。”然后b就换了一个叫const的锁。这下大门进不去了。但是我是一个专业的小偷,大门进不去我翻窗户进去。所以我通过一个叫int*p的指针进去,然后把钱偷走了。然后知道了c知道了ab两件的遭遇,他把大门和窗户都换成了const的锁。但是道高一尺,魔高一丈。我这一次不放窗户,也不进大门。我打地道进去,然后把钱偷了。
代码如图所示
这是const的一种用法,那const和指针又怎么用呢?这里还是给出一个例子。
假如 m和n是男孩,p是女孩。p和m是情侣关系。这天p和m走在大街上,看见一个买凉皮的,凉皮10块钱一碗。p说:“我想吃凉皮”。m说:“ 不行,我只有十块钱,买完我不就是个穷光蛋了吗,不行,坚决不行。”p心想:给我花十块钱都不舍得,那我跟他还有好日子过吗,不行,我得踢了他,那个n挺有钱的,我跟她好去。换成代码就是这样
m一看这不行啊,好不容易找到的对象找别人去了,为了10块钱丢了对象。不划算,我给你买,但你不能找男人。换成代码如下
那如果是const int* const p=&m 的话,那就是既不能买凉皮,也不能换对象。
总结一下,当const修饰变量时,我们不能直接改变变量的值,但是我们可以通过地址的方法改变变量的值。当const修饰指针时,只要看看const后面是 *p还是p,如果是*p,那么*p就不能改变,但是p可以;如果是const是 p,那么p就不可以改变,但是*p可以。