您好,登錄后才能下訂單哦!
這篇文章主要講解了“c語言左值與右值的概念是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“c語言左值與右值的概念是什么”吧!
左值與右值
問題闡述
賦值表達式中可以分為左值(lvaule)和右值(rvaule),那么什么是左值和右值?數組名做為左右值時又具有怎樣的意義?
lvalue估計來源于left value。在賦值語句中lvalue = rvalue;位置處于左邊。就是可以修改的值。
rvalue估計來源于right value。處于賦值語句右邊,是只讀的不可修改的值。
左值是指可以被賦值的表達式,也就是賦值符號左側的表達式。由此可以知道,右值就是指出現在賦值符右側的表達式。每一個賦值語句都有一個左值和一個右值。
(1)左值必須是變量。左值必須是內存中一個可存儲的變量,而不能是一個常量或
者表達式。例如,下面是正確的左值
int i;
int *p;
i=5;
*p=3;
i是一個整型變量,在內存中有一個對應的存儲位置。因此,語句i=5中,i可以作為一個左值。在語句*p=3中,*p表示p指向的內存區域,因此,*p是一個左值。而下面幾個例子就不是左值。
#define PRICE 10
int i,j;
PRICE=20;
(i+j)=10;
上面的代碼中, PRICE是一個常量值,其值不能改變,因為常量不表示內存中可存儲的位置;而(i+j)是一個表達式,也不能表示內存中可存儲的一個位置。所以這兩個賦值語句的左值都是不正確的
(2)右值可以是常量或者表達式,例如
#define PRICE 10
int i,j;
int *p:
i=5;
j=i+5
*p=PRICE;
(3)賦值語句必須有一個左值和一個右值。一條賦值語句必須有一個左值和一個右值,否則將無法通過編譯。
數組名作為左右值的意義:
當數組名作為左值時,是錯誤的。編譯器會認為數組名作為左值代表的意思是數組的首元素的首地址,但是這個地址開始的一塊內存是一個整體,只能訪問數組中某個元素,而無法訪問整個數組,所以可以把a[3]當左值,而不能把a當左值。
數組名代表數組的首地址,所以數組名作為右值時將數組的首地址賦給賦值符左側的變量。
綜上,數組名不可以作為左值,而數組中的元素是可以作為左值的。因為數組中的每個元素也可以被看作是一個變量,其在內存中有對應的存儲位置。
感謝各位的閱讀,以上就是“c語言左值與右值的概念是什么”的內容了,經過本文的學習后,相信大家對c語言左值與右值的概念是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。