dbgcode 发表于 2021-12-20 13:57

闲话C++渣男渣女const或相关的指针和引用

本帖最后由 dbgcode 于 2022-1-3 01:15 编辑

闲话C++中渣男const和委屈求全的const int *p
先看C++Primer5中的const怎样一步步的从纯洁变渣女的。
0、与const相关的指针命名解疑
1、const专一时         清纯时的样子 const int girl;分手后的样子int girl;
2、const变渣实录      渣女时的样子 const int &girl;
3、委屈求全的const int *p
与const相关的指针命名解疑,C++primer 5中的指针和网络通用指针的命名区别。
C++primer5中的与const相关的指针。
int ival=3.14;
const int *p=&ival;      //const int *p被称为指向常量的指针;
int *const p=&ival      //int *const p被称为常量指针。
网络中的命名方法常量指针=指向常量的指针。
const int *p=&ival;      //const int *p被称为常量指针;
int *const p=&ival      //int *const p被称为指针常量。
命名优劣不谈,各有各的说法,不过从文字修饰角度说,C++primer5更符合,指针是名词,修饰名词的定语在前是正常现象。
关于记忆,啥也不用想,星号代表指针,星号靠近谁就与谁有关,阅读顺序是从右向左。
const+类型+*+变量或对象,                  //*靠近变量,所以先修饰变量变成了指针变量,发现远处还有个const,那么远一定不是直接修饰指针的。
类型+*+const+变量或对象。                  //*靠近const,后边是变量,所以*先修饰const合成后再修饰变量,所以是常量指针。
或者用最更简单记忆法。除了指针和引用只要在类型前面的const都是修饰变量或者对象暂称为直接修饰吧,直接修饰的都属于顶层const,只有指针和引用是修饰它指向或者引用的对象称为间接修饰,间接修饰都是底层const。
一、当const还很清纯的时候,你送给她,他都很珍惜,都小心保护,不让她有一点伤害。

有家庭还带小孩的baron,也很爱家人,反正是不会离婚的那种。
const double baron=520.1314


单身狗是这样的。
int boy=25;                               //清纯的单身狗。
int man=30;                           //自由身的单身狗是这样的。

double male=518.1314   //有带孩子自由身的单身狗。


专一清纯时的girl遇到清纯的const boy 开始恋爱了。
const int girl=boy;         //清纯时候的girl,只接受一个人。

girl =man;            //看起来成熟点,但不喜欢啊,不是一个世界的人。
girl=baron;            //很讨厌这些有家庭的男人,还出来混的。
分过一次手后girl,她依然只爱单身狗。
int girl=boy;       // 欣然接受,一点也不抵抗,哈哈。
girl=man;            //尽管有点小抵抗,大了点,但会哄自己啊,后来就从了,
gilr=male;          //勉强接受,但是人家明说了,不要孩子,所以.1314的孩子只能给奶奶带了,父母就是辛苦啊,嘿嘿。

给她个已婚男神试下。
girl=baron;       //你马上就能看到,她不干,直接报错,为啥呢?绅士说了,要帮他照顾孩子,还要和他老婆一起好好相处,是你会干么?

二、const变渣实录,后来girl感觉生活太枯燥无聊,就和man、male甚至baron都开始相处了,渣女来了。
int &woman=girl;         //只是girl的一个别名而已。

girl=boy;
woman=boy;      //所以我们的心还是一样,我们依然是当初的样子。

经过在人群中摸摸索索,求知试客后的样子,渣女来了。
const int &slut=woman;       //我才是渣女,你认识么?

渣女可是来着不拒,你要不要来试下。
const int &slut=boy;       //是个人就行,不是人可能也行。

const int &slut=man;      //是个人就行,不是人可能也行。
const int &slut=male;      //有孩子的单身狗,过来吧,我要。
const int &slut=baron;    //有孩子有家庭的,过来吧,我也要。
三、委屈求全的const int *p,社会套路多,除了自以为是,你别无选择,哈哈。
const int *p=&slut;   //在他眼里slut很清纯,slut是从一而终的,一直不会改变的。其实不过是自嗨罢了。
*p=baron;                     //他认为slut很清纯,所以这样是不行,一赋值就报错。
const int &slut=baron;                  //slut说了,你怎么想关我屁事,我就好这一口,所以slut依然蹦迪泡仔。



总结,事实总是和现实那么相似,渣女和仙女也是那么相似,可谓冥冥之中亦是天数。


擦亮狗眼看细节,差距微乎其微。
清纯时的样子 const int girl;
渣女时的样子 const int &girl;







Pojie1999.0909 发表于 2022-1-5 14:14

最近也在学C++,读《C++ Primer 第五版》已60多个小时,深感C++知识点之多,内容之深。尤其是第十三章以后,拷贝控制、重载运算等概念,让我常常深感力不从心。

关于常量和指针,只记住两句话就行了:
1.指向常量的指针
2.这个指针是个常量

然后举几个比较容易理解的例子:
int i = 0; // i是个整数,值为0
const int ci = 1; // ci是个整型常量对象,值为1
const int *p = &i; // p是个指针,指向一个整型常量,这里指向了i这个整型对象
int *p1 = &ci; // 错误,不能指向常量对象ci
const int *const p2 = &ci; // 正确,p2是个常量指针,它指向一个常量,这里指向了ci
int *const p3 = &i; // 正确,p3是个常量指针,它指向一个整型对象,这里指向了i

学好C++,不易。向吾爱的各位大佬学习!

dbgcode 发表于 2022-1-3 01:23

冥界3大法王 发表于 2022-1-2 10:55
@dbgcode你给我念念这句话:

本意是想说,const靠近谁就修饰谁,可能描述不太清楚。在指向常量的指针这个表达式const int *p里相对*号const确实远了很多。所谓的远近都是相对与变量或者对象的。。

素问何问 发表于 2021-12-20 14:32

看上去他变了 实际并没有 但最终结果还是变了

VESSION 发表于 2021-12-20 14:36

和hi哈哈哈哈

zs10355 发表于 2021-12-20 14:58

................看乐了

ggogg928 发表于 2021-12-20 15:09

笑死我记得之前好像还有渣男 渣女语录来着

列明 发表于 2021-12-20 15:15

看不懂。

你是我的人 发表于 2021-12-20 15:16

有点意思哈哈哈

tl;dr 发表于 2021-12-20 15:38

hackysh 发表于 2021-12-20 15:43

double int male=518.1314
又是double,又是int, 这咋个算

icjhao 发表于 2021-12-20 15:59

哈哈哈哈哈拟人化好有意思
页: [1] 2 3
查看完整版本: 闲话C++渣男渣女const或相关的指针和引用