導語: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是一個函式指標變數,該函式返回的一個指標值又指向一個指標陣列,該指標陣列的元素指向整型量。