任何人都可以给我关于 c 中的左值和右值的正确解释吗?我还没有找到合适的。如果有人有链接,请粘贴作为评论。
最佳答案
左值是可以获取其地址(通常是异常(exception):寄存器变量)的实体,并且它们在内存中驻留的时间足够长,可以通过名称进行引用。< br/>
r-values是变量对象,其地址无法获取,并且它们在内存中驻留的时间不够长,无法通过名称引用,它们是无名的。通常也称为无名临时对象。
<强> Sample Program:
int returnanInteger()
{
int i = 10;
return i;
}
void doSomething(int i)
{
//do something, right now we don't care
}
int main()
{
int i = 20;
doSomething(returnanInteger());
return 0;
}
在上面的程序中,main()
中的i
是一个左值,因为它的地址可以被获取并且可以被一个姓名。
同时,在声明中:
doSomething(returnanInteger());
returnanInteger()
返回的值是一个r-value,它的地址无法获取,并且它在内存中保留的时间不够长,无法通过任何名称引用.它会立即被复制并作为参数传递给函数 doSomething()
。
关于c - C 中的左值和右值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10646823/