1.C編程語言變量
1.1 C編程語言內置變量類型
(1)基本類型(2)構造類型(3)指針類型(4)空類型
1.2 編譯器如何解釋變量
每一個變量都必須有類型;只有知道這個變量是什麼類型的,編譯器才知道如何爲用戶定義的變量分配內存空間,才知道如何對分配給某個變量的內存空間進行解釋。指針它也不例外。指針它就是一種C編程語言中的內置變量類型。編譯器爲整型變量分配4個字節大小的的內存,按照整型數據的性質,可以對已分配的這塊內存執行一些操作。比如賦值,取值,加減乘除等。我們可以看到,變量無非數據加在該數據上的某些操作而已。如果操作是編譯器未曾定義的,那麼該操作就是違法的。說道這裏可能有些遠了,其實不然。指針作爲內置變量類型,允許程序向編譯器定義某個指針變量,允許程序員對指針變量進行一些操作,比如加減。我們知道整型變量存儲整型數據,字符型變量存儲字符型數據,而指針呢?指針裏面存儲的數據有些特殊,它存儲某個變量的在內存空間中的地址,即存儲一個32的整數,當編譯器遇到指針型變量時,就把它存儲的數據解釋爲一個地址,到該地址去取出數據內容,而不是直接把地址取出。
如何一個指針存儲了一個字符型變量的地址,那麼我們就需要通知編譯器,我們定義了一指針,它的數據內容是一個字符型變量的地址,即該指針指向一個字符型變量;同理,我們還可以定義其他類型的指針,比如整型、浮點型等。
不管定義了一個怎麼樣類型的指針,只需要牢牢記住它歸根到底是一個變量,一個指針變量而已。函數指針,它是一個指針變量,它指向一個函數開始的地方;數組指針,它是一個指針,它指向一塊連續的內存。
2. C編程語言變量之指針變量
2.1 一級指針
一級指針是最常用的。
(1)基本類型指針
整型指針、字符型指針、浮點型指針。這幾種指針就不往下討論了。
(2)特殊類型指針
空指針、常量指針、指針常量、數組指針、指針數組、結構體指針、聯合體指針、枚舉指針、函數指針。。。。還有指針指不了的地方嘛?它真是太厲害了。
有一本書,叫深度剖析C語言,裏面對各種類型的指針做了詳細的介紹,我就不在這兒獻醜了。
2.2 二級指針
二級指針,即指向指針的指針。上面提到,指針的內容是某個變量的地址,當這個被指着的變量是一個一級指針時,那麼指針就是一個二級指針了。比如定義了一個二級指針
int x=100;int **p;int *q = &x;p = &q;變量p內存儲了一個變量的地址,找到這個地址,即找到變量q,但是q也是個指針,它的內容不是我們想要的,我們想要的是q指向的那個變量裏的數據,即x裏面的數據100。有必要提一下,p指向的是q,當有必要時,也是可以把q的內容取出來的,即x的地址。
2.3 多級指針
多級指針是個什麼東東?三級指針,指向指針的指針的指針;那四級指針呢?想想就可以了。