数组左值和右值问题
簡單的說,就是數(shù)組名出現(xiàn)在賦值符號“=”左邊的就是左值,出現(xiàn)的右邊的就是右值。
例如
? ? ? ? ? ? ? ? ?x = y ;
左值:在這個上下文環(huán)境中,編譯器認(rèn)為x的含義是x所代表的地址。當(dāng)然,這個地址只有編譯器知道咯
右值:在這個上下文環(huán)境中,編譯器認(rèn)為y是y所代表的地址里面的內(nèi)容。至于內(nèi)容是什么,只有運(yùn)行的時候,編譯器才知道。
另外,C語言中引入了一個術(shù)語---“可修改的左值”,表示的是賦值符號“=”左邊代表的地址上的內(nèi)容是一定可以修改的。我們可以這么理解:只能對非只讀的變量賦值。
例如
? ? ? ?創(chuàng)建一個數(shù)組 ?:char a[10] ;
a作為右值,很多人估計(jì)也在學(xué)習(xí)的時候,估計(jì)會?把它作為 數(shù)組的地址,這是錯誤的!a作為右值時代表的意義和 &a[0]的意義是一樣的,代表 數(shù)組首元素的首地址,而不是數(shù)組的地址。 注意:這里只是“當(dāng)作”,并沒有一個地方來存儲這個地址。 a不能作為左值!!!編譯器會認(rèn)為數(shù)組名作為左值代表的是a的首元素的首地址,但是這個地址開始的一塊內(nèi)存是一個整體,我們只能訪問數(shù)組的某個元素,而無法把數(shù)組數(shù)組當(dāng)做一個整體來進(jìn)行訪問。所以,我們可以把a(bǔ)[i]當(dāng)左值,無法把a(bǔ)當(dāng)左值。也可以這么理解:a的內(nèi)部是由很多小部分組成,我們只能通過訪問這些小部分來達(dá)到訪問 a的目的。轉(zhuǎn)載于:https://www.cnblogs.com/xiaoyoucai/p/6148279.html
總結(jié)
- 上一篇: 如何强制关闭服务
- 下一篇: Content Security Pol