c 中左值與右值的區別

2021-07-16 17:01:44 字數 382 閱讀 6571

c++中常出現error為:非常量引用的初始值必須為左值。即說明你引用不是左值,可能為右值。那麼左值與右值的區別是什麼呢?

看能否對表示式取位址,如果能,則為左值;否則為右值。

例如:

int i = 5;

int &a = i;

這時編譯通過,但是如果 int &a = 5;這樣就出錯了

這個5和i有什麼區別,答案就是5是右值,i是左值,為什麼,參考上面的話。

回到你的**

你用乙個函式的返回值給非常量引用初始化

那麼函式的返回值是啥呢

在函式返回的時候,系統將返回值存放至eax暫存器,然後回到主函式中,eax暫存器存放的就是返回值,而這裡這個返回值就是乙個數值,不能對其取位址,所以這是乙個右值

c 中的左值與右值的區別

左值 lvalue 和右值 rvalue 是 c c 中乙個比較晦澀基礎的概念,不少寫了很久c c 的人甚至沒有聽過這個名字,但這個概念到了 c 11 後卻變得十分重要,它們是理解 move forward 等新語義的基礎。左值與右值這兩概念是從 c 中傳承而來的,在 c 中,左值指的是既能夠出現在...

C 中左值與右值

讓我們先看看一些常見的左值和右值舉例 int var 6 var is a lvalue const int var 6 var is a nonmodifiable lvalue char str hello,world str is a nonmodifiable lvalue hello,wo...

C 中左值與右值

讓我們先看看一些常見的左值和右值舉例 int var 6 var is a lvalue const int var 6 var is a nonmodifiable lvalue char str hello,world str is a nonmodifiable lvalue hello,wo...