當前位置:才華齋>計算機>C語言>

C語言指針相關知識

C語言 閲讀(1.34W)

導語:C語言是一門非常專業的課程,下面是其中一些知識,歡迎參考!

C語言指針相關知識

  1. 指針是C語言中一個重要的組成部分,使用指針編程有以下優點:

(1)提高程序的編譯效率和執行速度。

(2)通過指針可使用主調函數和被調函數之間共享變量或數據結構,便於實現雙向數據通訊。

(3)可以實現動態的存儲分配

(4)便於表示各種數據結構,編寫高質量的程序。

  2. 指針的運算

(1)取地址運算符&:求變量的地址

(2)取內容運算符*:表示指針所指的變量

(3)賦值運算

·把變量地址賦予指針變量

·同類型指針變量相互賦值

·把數組,字符串的首地址賦予指針變量

·把函數入口地址賦予指針變量

(4)加減運算

對指向數組,字符串的指針變量可以進行加減運算,如p+n,p-n,p++,p--等。對指向同一數組的'兩個指針變量可以相減。對指向其它類型的指針變量作加減運算是無意義的。

(5)關係運算

指向同一數組的兩個指針變量之間可以進行大於、小於、 等於比較運算。指針可與0比較,p==0表示p為空指針。

  3. 與指針有關的各種説明和意義見下表。

int *p;     p為指向整型量的指針變量

int *p[n];   p為指針數組,由n個指向整型量的指針元素組成。

int (*p)[n];  p為指向整型二維數組的指針變量,二維數組的列數為n

int *p()    p為返回指針值的函數,該指針指向整型量

int (*p)()   p為指向函數的指針,該函數返回整型量

int **p     p為一個指向另一指針的指針變量,該指針指向一個整型量。

  4. 有關指針的説明很多是由指針,數組,函數説明組合而成的。

但並不是可以任意組合,例如數組不能由函數組成,即數組元素不能是一個函數;函數也不能返回一個數組或返回另一個函數。例如

int a[5]();就是錯誤的。

  5. 關於括號

在解釋組合説明符時, 標識符右邊的方括號和圓括號優先於標識符左邊的“*”號,而方括號和圓括號以相同的優先級從左到右結合。但可以用圓括號改變約定的結合順序。

  6. 閲讀組合説明符的規則是“從裏向外”。

從標識符開始,先看它右邊有無方括號或園括號,如有則先作出解釋,再看左邊有無*號。 如果在任何時候遇到了閉括號,則在繼續之前必須用相同的規則處理括號內的內容。例如:

int*(*(*a)())[10]

↑ ↑↑↑↑↑↑

7 6 4 2 1 3 5

上面給出了由內向外的閲讀順序,下面來解釋它:

(1)標識符a被説明為;

(2)一個指針變量,它指向;

(3)一個函數,它返回;

(4)一個指針,該指針指向;

(5)一個有10個元素的數組,其類型為;

(6)指針型,它指向;

(7)int型數據。

因此a是一個函數指針變量,該函數返回的一個指針值又指向一個指針數組,該指針數組的元素指向整型量。