C語言學(xué)習(xí)筆記
指針詳解:
????內(nèi)存中字節(jié)的編號稱為地址(Address)或指針(Pointer)。地址從 0 開始依次增加,對于 32 位環(huán)境,程序能夠使用的內(nèi)存為 4GB,最小的地址為 0,最大的地址為 0XFFFFFFFF。
????變量名和函數(shù)名為助記符,讓我們在編寫代碼的過程中可以使用易于閱讀和理解的英文字符串,不用直接面對二進(jìn)制地址。
需要注意的是,雖然變量名、函數(shù)名、字符串名和數(shù)組名在本質(zhì)上是一樣的,它們都是地址的助記符,在編寫代碼的過程中,我們認(rèn)為變量名表示的是數(shù)據(jù)本身,而函數(shù)名、字符串名和數(shù)組名表示的是代碼塊或數(shù)據(jù)塊的首地址。
C語言本質(zhì)就是CPU對內(nèi)存地址操作。
&
來獲得它的地址;str 本身就表示字符串的首地址,不需要加&。%為格式輸出,
%#X
表示以十六進(jìn)制形式輸出,并附帶前綴0X,
%p也是可以的。
數(shù)據(jù)在內(nèi)存中的地址也稱為指針,如果一個變量存儲了一份數(shù)據(jù)的指針,我們就稱它為指針變量。
這種變量稱為指針變量。指針變量的值就是某份數(shù)據(jù)的地址,這樣的一份數(shù)據(jù)可以是數(shù)組、字符串、函數(shù),也可以是另外的一個普通變量或指針變量。
現(xiàn)在假設(shè)有一個 char 類型的變量 c,它存儲了字符 'K'(ASCII碼為十進(jìn)制數(shù) 75),并占用了地址為 0X11A 的內(nèi)存(地址通常用十六進(jìn)制表示)。另外有一個指針變量 p,它的值為 0X11A,正好等于變量 c 的地址,這種情況我們就稱 p 指向了 c,或者說 p 是指向變量 c 的指針。

定義指針變量:
*
是一個特殊符號,表明一個變量是指針變量,定義p 時必須帶*
。而給p賦值時,因?yàn)橐呀?jīng)知道了它是一個指針變量,就沒必要多此一舉再帶上*,定義后可以像普通變量一樣使用不要加*了
。定義指針變量時必須帶*
,給指針變量賦值時不能帶*
。
解引用值: