关于左右值的问题

来源:6-8 指针的基本操作二

dark铭

2020-02-27

为什么说++cp做左值的时候就没有一个专门的空间去存储
而*++cp的时候那个空间就存在了?不是都没有分配吗?

写回答

1回答

quickzhao

2020-02-27

++cp做左值的时候没有一个类似CP的可见变量区域去存储,++CP只是一个中间的地址值;而*++CP确实在内存中可以找到实在的存储空间来存储变量,就是ch后面的存储空间;本质上不同在于能不能显示的找到存储该变量的寻址位置。

1
7
Autonomy7269969
++cp的相当于一个表达式,老师讲汇编原理的时候不是说先cp这个内存地址+1了吗,然后左值的内存地址去接受这个cp+1后的内存地址的值。说明这个cp+1的内存地址是存在的不然哪里去拿值?现在再加个指针符号,不就相当于指向这个地址了吗?把他标记出来了。我觉得这里的标记出来的前提是这个地址本身已经被初始化了。如果没初始化没有值,那++cp就是个“野”指针?“野”指针是不能被间接访问的吧。访问是会出不可预知的问题吧。个人理解,望老师指点迷津。
2020-05-03
共7条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程