内容:
const深入理解之
这里有三个变量分别为p、m、n
接下来放一个代码:int* p = &m;
这里我们明白p是指针类型的一个变量,p里面存的是m的地址。如果这句话不理解,可以这么理解,既然m的地址存放在p中,那我们是不是通过p就可以找到了m了,很像是p指向了m。
接下来就是我们今天的内容了:
要理解const的修饰情况;
第一种假设:
我们可以这样想像,p是女孩、m是男孩1、n是男孩2;
热恋中的女孩带着男孩1 去逛街,女孩渴了,想喝杯奶茶,问男孩1
可不可以请他喝一杯。可是男孩1只有10块钱,如果买了那自己就没钱了。
买这杯奶茶这个动作就是:
*p = 0;(女孩花完了男孩1兜里的十块钱,就没钱了)
可是男孩1想想不请他喝奶茶,不然十块钱不保了。
所以男孩1想了一个办法,
int const *p = &m;(在*左边加一个const就意味着修饰着*和p)
那当女孩想要买奶茶 也就是 *p=0;这个动作就不可以完成了;
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
女孩一看这么小气,奶茶都不请我喝,她觉得男孩2也不错,而且还有钱,长得也帅,就想找男孩2
处对象;
女孩就 p=&n;和男孩2建立了关系;
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
小贴士:
这里为什么我们可以p=&n???我们从上面可以知道const修饰的是*p没有修饰p所以这里p是可以对n取地址的;
**************************************************************************************************************
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
男孩1又想不可以分手,要换男朋友这不可能!!!所以男孩1就慌了,还是请他喝奶茶吧,但是希望女孩别换男朋友!
int * const p = &m;
所以男孩1在*的右边加了const, 在这两个位置加const,修饰的就是p了。限制了女孩找别的男生!
那这个什么动作可以发生呢???
你想的没错啊~ 是 * p = 0;这个动作是可以发生的,也就是可以花男孩1的钱;
但是 p =&n;这个动作是完成不了的;因为这时候p被const修饰了;
这时候女孩就比较惨了,她只能和男孩1做男女朋友,不可能在和别的男生有联系了。
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
朋友们,我们来这样想一下,男孩1又不想花钱,又不想分手,他会怎么做???
给自己留一点时间思考一下哦,在来看下面的思路
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
这种花钱的情况又经常发生啊,但是男孩1 又很穷,没什么收入!但是喜欢这个女孩,不想和她分手!!!
男孩1 琢磨了很久
想了想
原本int*p = &m;
女孩是可以花到自己钱的 *p =0;但我不想给女孩花钱;
所以我在*左边加了一个const,这样女孩*p=0。的时候就不会成功;
但不给女孩花钱她就会分手,找别的男孩; p = &n;和别的男生建立关系;
我又不想分手,所以我就把const放在了*的右边;
那占有欲又强、又穷的男孩1 就在*的左右都加了const
int const * const p=&m;
总结
- const修饰*p就不能改变 *p的内容;
- const 修饰p就不能改变 p的内容;