單片機(jī)C程序中的指針與指針變量
例如定義一個整形變量int x,編譯器就會分配兩個存儲單元給x。如果給變量賦值,令x=30,這個值就會放入對應(yīng)的存儲單元中。雖然這個地址是由編譯器分配的,但我們是無法事先確定的,但可以用取地址運(yùn)算符&取出變量x的地址,例如取x變量的地址用&x。
&x就是變量x的指針,指針是由編譯器分配,而不是由程序指定的,但指針值可以用&x取出。
如果把指針(地址值)也作為一個變量,并定義一個指針變量xp,那么編譯器就會另外開辟一個存儲單元,用于存放指針變量。這個指針變量實(shí)際上成了指針的指針,例定義:
int *xp
通過語句xp=&x把變量x的地址值,存于指針變量xp中,現(xiàn)在訪問變量x有兩種方法,一是直接訪問,另外是用指針間接訪問:*xp
在int *xp中的*和*xp中的*所代表的意義不同,int *xp中的*是對指針變量定義時作為類型說明,而*xp中的*是運(yùn)算符,表示由xp所指示的內(nèi)存單元中取出變量值。
評論