c 左值 右值 左值引用 右值引用

2021-09-17 21:34:30 字數 709 閱讀 2140

在c語言中,左值認為是賦值語句的左側,右值認為是賦值語句的右側。

在c++中,意義稍有不同。c++中,每乙個表示式會產生乙個左值或者右值,相應的,該表示式也就被稱作「左值表示式", "右值表示式"。乙個左值表示式的求值結果是乙個物件或者是乙個函式。

左值可以當右值使用,而右值不能當左值使用。

《c++prime》中這麼簡單歸納左值和右值:當乙個物件被用作右值時候,用的是物件的值(內容),當物件被用作左值時,用的是物件的身份(記憶體中的位置)。

我的理解如下:能夠使用取&的物件一定是左值物件,但是這個物件在表示式中是否充當左值,並不一定。例如:

int a =2;

int b = a;

在第乙個語句中,a無疑是乙個左值,但是在第二個語句中,我認為a是充當右值,並沒有使用到 物件a的位址。

我理解在表示式中只是借用物件的數值,那麼這個物件是右值,在借用後,表示式物件生命週期不結束,那麼這個表示式是左值表示式。左值一般具有相對持久的狀態,即使是自動變數,也在作用域結束後才銷毀。而右值一般是字面值常量,或者是表示式求值中建立的臨時物件。

具體的原因等我看完編譯、鏈結相關主題的書籍回來再**。

大部分常見的引用是左值引用,例如

int a =3;

int &b = a;

右值引用只能繫結到右值上,而且是乙個將要銷毀的物件。右值引用使用&&獲取,而不是&

左值 右值 左值引用 右值引用

2015 06 01 15 07 404人閱讀收藏 舉報 c 11 5 一 c 中的左值和右值 誤區 左值位於等號左邊,右值位於等號右邊。c 11中的定義 左值表示式表示的是乙個物件的身份 在記憶體中的位置 而右值表示式表示的是物件的值 內容 左值和右值都是針對表示式而言的,左值是持久的,右值是短暫...

左值 左值引用 右值 右值引用

1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...

左值 左值引用 右值 右值引用

1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...