【发布时间】:2021-10-26 02:53:48
【问题描述】:
假设我写了两个函数:
int f() {
return 1;
}
int g() {
int* x = &f();
}
我无法在 C 中编译它,因为您“无法获取右值的地址”。这是有道理的,因为来自f 的返回值存在于寄存器中。 (也就是说,它没有有要分配的地址。)
另一方面,我可以编译这个:
int h(int x) {
int* y = &x;
return 0;
}
为什么? h 的参数也存在于寄存器中,因此它不应该有地址。我误会了什么?
【问题讨论】: