單片機(jī)C程序中的指針與指針變量
例如定義一個(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
通過語(yǔ)句xp=&x把變量x的地址值,存于指針變量xp中,現(xiàn)在訪問變量x有兩種方法,一是直接訪問,另外是用指針間接訪問:*xp
在int *xp中的*和*xp中的*所代表的意義不同,int *xp中的*是對(duì)指針變量定義時(shí)作為類型說明,而*xp中的*是運(yùn)算符,表示由xp所指示的內(nèi)存單元中取出變量值。
評(píng)論