中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c語言左值與右值的概念是什么

發布時間:2022-03-17 14:02:20 來源:億速云 閱讀:244 作者:iii 欄目:大數據

這篇文章主要講解了“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語言左值與右值的概念是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

增城市| 青神县| 射洪县| 尼勒克县| 望谟县| 兰考县| 柏乡县| 奎屯市| 南丰县| 柯坪县| 乡城县| 白城市| 平罗县| 丰宁| 扎赉特旗| 元氏县| 高邑县| 兴城市| 綦江县| 株洲市| 独山县| 叙永县| 康乐县| 乐都县| 钦州市| 剑河县| 新源县| 云阳县| 贵州省| 民权县| 曲周县| 库尔勒市| 石城县| 梅河口市| 扬州市| 平乐县| 都安| 二连浩特市| 静宁县| 麻城市| 昭苏县|