指針是什麼

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 多級指針

多級指針是個什麼東東?三級指針,指向指針的指針的指針;那四級指針呢?想想就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章