新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)C程序中的指針與指針變量

單片機(jī)C程序中的指針與指針變量

作者: 時(shí)間:2016-11-29 來源:網(wǎng)絡(luò) 收藏
一個(gè)變量具有一個(gè)變量名,對(duì)它賦值后就有一個(gè)變量值,變量名和變量值是兩個(gè)不同的概念。變量名對(duì)應(yīng)于內(nèi)存單元的地址,表示變量在內(nèi)存中的位置,而變量值則是放在內(nèi)存單元中的數(shù)據(jù),也就是內(nèi)存單元的內(nèi)容。變量名對(duì)應(yīng)于地址,變量值對(duì)應(yīng)于內(nèi)容,應(yīng)以區(qū)別。
例如定義一個(gè)整形變量int x,編譯器就會(huì)分配兩個(gè)存儲(chǔ)單元給x。如果給變量賦值,令x=30,這個(gè)值就會(huì)放入對(duì)應(yīng)的存儲(chǔ)單元中。雖然這個(gè)地址是由編譯器分配的,但我們是無法事先確定的,但可以用取地址運(yùn)算符&取出變量x的地址,例如取x變量的地址用&x。

&x就是變量x的指針,指針是由編譯器分配,而不是由程序指定的,但指針值可以用&x取出。


如果把指針(地址值)也作為一個(gè)變量,并定義一個(gè)指針變量xp,那么編譯器就會(huì)另外開辟一個(gè)存儲(chǔ)單元,用于存放指針變量。這個(gè)指針變量實(shí)際上成了指針的指針,例定義:
int *xp

通過語句xp=&x把變量x的地址值,存于指針變量xp中,現(xiàn)在訪問變量x有兩種方法,一是直接訪問,另外是用指針間接訪問:*xp

在int *xp中的*和*xp中的*所代表的意義不同,int *xp中的*是對(duì)指針變量定義時(shí)作為類型說明,而*xp中的*是運(yùn)算符,表示由xp所指示的內(nèi)存單元中取出變量值。


評(píng)論


技術(shù)專區(qū)

關(guān)閉