老师,左右值还是不太理解

来源:6-9 指针的基本操作三

我想跑路

2022-09-26

int a =2;
int* pa=&a;
++pa=&a;
pa++=&a //error 报错

在msvc编译环境下

++pa能作为左值但是pa++不可以;这点要怎么理解呢?(和课上讲的不一样)
结合顺序是不这样?
++pa=&a;-》(++pa)=&a;
pa++=&a-》(pa)++=&a

写回答

1回答

quickzhao

2022-09-27

左值对应有明确地址的一块空间,而右值不是,比如临时对象。你看看这里++在前缀和后缀的实现,前缀实现其实返回的就是对象本身,所以有明确的地址,可以作为左值;而后缀的实现则只是返回一个临时对象,不能做左值。

0
3
我想跑路
回复
quickzhao
好的,谢谢老师
2022-09-28
共3条回复

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

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

3884 学习 · 1103 问题

查看课程