這篇文章主要講解了“c語(yǔ)言左值與右值的概念是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“c語(yǔ)言左值與右值的概念是什么”吧!
創(chuàng)新互聯(lián)專(zhuān)注于呼和浩特網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供呼和浩特營(yíng)銷(xiāo)型網(wǎng)站建設(shè),呼和浩特網(wǎng)站制作、呼和浩特網(wǎng)頁(yè)設(shè)計(jì)、呼和浩特網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造呼和浩特網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供呼和浩特網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
左值與右值
問(wèn)題闡述
賦值表達(dá)式中可以分為左值(lvaule)和右值(rvaule),那么什么是左值和右值?數(shù)組名做為左右值時(shí)又具有怎樣的意義?
lvalue估計(jì)來(lái)源于left value。在賦值語(yǔ)句中l(wèi)value = rvalue;位置處于左邊。就是可以修改的值。
rvalue估計(jì)來(lái)源于right value。處于賦值語(yǔ)句右邊,是只讀的不可修改的值。
左值是指可以被賦值的表達(dá)式,也就是賦值符號(hào)左側(cè)的表達(dá)式。由此可以知道,右值就是指出現(xiàn)在賦值符右側(cè)的表達(dá)式。每一個(gè)賦值語(yǔ)句都有一個(gè)左值和一個(gè)右值。
(1)左值必須是變量。左值必須是內(nèi)存中一個(gè)可存儲(chǔ)的變量,而不能是一個(gè)常量或
者表達(dá)式。例如,下面是正確的左值
int i;
int *p;
i=5;
*p=3;
i是一個(gè)整型變量,在內(nèi)存中有一個(gè)對(duì)應(yīng)的存儲(chǔ)位置。因此,語(yǔ)句i=5中,i可以作為一個(gè)左值。在語(yǔ)句*p=3中,*p表示p指向的內(nèi)存區(qū)域,因此,*p是一個(gè)左值。而下面幾個(gè)例子就不是左值。
#define PRICE 10
int i,j;
PRICE=20;
(i+j)=10;
上面的代碼中, PRICE是一個(gè)常量值,其值不能改變,因?yàn)槌A坎槐硎緝?nèi)存中可存儲(chǔ)的位置;而(i+j)是一個(gè)表達(dá)式,也不能表示內(nèi)存中可存儲(chǔ)的一個(gè)位置。所以這兩個(gè)賦值語(yǔ)句的左值都是不正確的
(2)右值可以是常量或者表達(dá)式,例如
#define PRICE 10
int i,j;
int *p:
i=5;
j=i+5
*p=PRICE;
(3)賦值語(yǔ)句必須有一個(gè)左值和一個(gè)右值。一條賦值語(yǔ)句必須有一個(gè)左值和一個(gè)右值,否則將無(wú)法通過(guò)編譯。
數(shù)組名作為左右值的意義:
當(dāng)數(shù)組名作為左值時(shí),是錯(cuò)誤的。編譯器會(huì)認(rèn)為數(shù)組名作為左值代表的意思是數(shù)組的首元素的首地址,但是這個(gè)地址開(kāi)始的一塊內(nèi)存是一個(gè)整體,只能訪(fǎng)問(wèn)數(shù)組中某個(gè)元素,而無(wú)法訪(fǎng)問(wèn)整個(gè)數(shù)組,所以可以把a(bǔ)[3]當(dāng)左值,而不能把a(bǔ)當(dāng)左值。
數(shù)組名代表數(shù)組的首地址,所以數(shù)組名作為右值時(shí)將數(shù)組的首地址賦給賦值符左側(cè)的變量。
綜上,數(shù)組名不可以作為左值,而數(shù)組中的元素是可以作為左值的。因?yàn)閿?shù)組中的每個(gè)元素也可以被看作是一個(gè)變量,其在內(nèi)存中有對(duì)應(yīng)的存儲(chǔ)位置。
感謝各位的閱讀,以上就是“c語(yǔ)言左值與右值的概念是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)c語(yǔ)言左值與右值的概念是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!