c - C 中的左值和右值

标签 c

任何人都可以给我关于 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/

相关文章:

c - 设置循环次数

java - 从 Java 调用 c 函数

转换 .txt 文件的文本

c - 如何为CUDA优化Conway的人生游戏?

c - 如何在c中的函数中动态分配内存?

c - 推送服务器的 select() 问题 - c/c++

c - 没有 sizeof 运算符的数组大小

c - 为什么2个线程的执行比C中的1个线程慢?

c - 简单程序上的非常奇怪的段错误

可以使用 const 变量来声明 C 中数组的大小吗?