&ch左值非法但是*cp不非法。

来源:6-7 指针的基本操作一

Autonomy7269969

2020-05-03

都是在内存中取地址。为啥引用取地址就是非法呢。是因为引用相当于一种取地址的表达式没有内存地址专门存储值,而指针却有专门的内存地址存取得的内存地址。所以引用作为左值非法而指针可以。我大胆猜想一下,既然指针作为数据类型左值右值的特性是这样的,所以所有数据类型都是有1**.独立开辟特定内存空间** 2。左值为取内存地址,右值为取值。然后我又联想到指针这种特殊的数据类型其实就是对其他数据类型内存地址的操作**,因为我以前也学过java,所以知道没有指针的java也可以进行开发。现在看来,应该是故意放弃指针操作让程序员在有限的安全的区域进行开发操作,将复杂的内存操作交给了封装好的方法。所以自由度有限,开发业务的程序员很难接触到底层的东西。那么作为C++的神器指针,到底在哪些地方会真的发挥神效?我做过java与c++的联调开发,在java与c++的数据交换函数(我们项目组定义的是JNI接口)中,c++这边一般会返回一个内存地址指针参数给java,是不是跨平台的联调其实就是利用内存地址来取值啊?java那边没看明白他们的函数,封装和宏定义很多,学生基础很差看不懂。学生大胆联想,望老师给予修正,指出不足和局限的地方。非常感谢!

写回答

1回答

quickzhao

2020-05-04

不要乱猜想,编程所有的事实都源于代码!&cp只是在引用定义时做一次初始化,不明白你说的“引用取地址就是非法”啥意思。请仔细看我关于指针,引用和左值,右值的说明。

0
2
Autonomy7269969
是因为&cp取地址没有一个明确的地址去接受它,所以不能作为左值。跟那个cp++一样的原因是吧,重看了,谢谢
2020-05-04
共2条回复

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

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

3884 学习 · 1103 问题

查看课程