给定两个变量:
int x
int* p以下这些表达方式:
*(&x+*p)+x&p+x*(&p-(int**)&x)+x*(&x+*(p+7))对于每个表达式,确定它是否有效,是否为Rvalue表达式或Lvalue表达式,以及它所代表的类型。
其他人呢?谢谢你的帮助!
发布于 2014-06-06 14:27:16
我认为最好的答案是解释发生了什么,并提出一些“建议的问题”,并把决定留给你。
*(&x+*p)+x&p+x*(&p-(int**)&x)+x*(&x+*(p+7))你为什么那么想?这都是关于指针算法的。
但您所处的位置非常正确,因为访问可能是未定义的。但这并没有改变作为Lvalue或Rvalue的资格。
请注意,*(a+b)与a[b]是相同的,因此它可以编写为(&x)[*p] + x,即int + int。有可能给它分配任何东西吗?
不,你不是。它是一个pointer + integer,结果指向一个指针。
*(&p-(int**)&x)+x
这本质上是*(pointer-pointer) + integer。由于pointer-pointer是整数,因此不能取消引用,.*(&x+*(p+7))
这是*(pointer + *(pointer+integer)),所以是*(pointer + integer)。能分配给他们吗?https://stackoverflow.com/questions/24083981
复制相似问题