1. 程式人生 > >淺談指標與引用

淺談指標與引用

指標:故名思義為指向一塊空間的地址。它裡面儲存的數值被解釋成為記憶體裡的一個地址。所以,指標也叫地址。
1.指標的型別:只要將指標宣告語句中的指標名字去掉,剩下的即為指標的型別。
下面來進行依次檢視。

1)、int *p; //指標型別為int*2)、char*p;.//指標型別為char*3)、int**p;//指標型別為int**4)、int (*p)[5];  指標型別為int (*)[];

還有很多,就不依次舉例了。
2.關於指標的複雜型別。(其中有優先順序的順序等等因素),下面依次來看。

先從簡單的一個整形變數來進行分析:如int p;//其為一個整型變數。
(1
)、int *p;//p與*結合,說明了p為一個指標,指標所指向的內容為int型,即p為一個指向整型資料的指標。 (2)、int**p;//p與*結合,說明p為一個指標,再與*結合,說明指標所指向的元素是指標,之後再與int結合, 說明該指標所指向的元素是int型。p即為二級指標。 (3)、int p[];//p與[]結合,說明p為一個數組,再與int結合,陣列中的元素為整型。 (4)、int *p[];//p先與[]結合,[]優先順序高於*。所以p是一個數組,再與*結合說明陣列中的元素是指標型別。 之後再與int結合,說明指標所指向的內容為整型。故p是一個由返回整型資料的指標組成的陣列。(即為指標陣列) (5
)、int(*p)[];//因為有括號,所以p先與*結合,說明p為一個指標,之後與[]結合,說明指標所指向的內容為一個 陣列,之後與int結合,即可說明陣列中的內容為int型,所以p是一個指向由整型資料組成的陣列的指標。 (即為陣列指標) (6)、int p(int)//p先與()結合,說明p為一個函式,而括號內為int,所以該函式的引數為整型,之後再與最外面 的int結合,說明函式的返回值為int型。 (7)、int(*p)(int);//p先與*結合,說明p為一個指標,之後與()結合,說明p指向的是一個函式,括號內部為int, 說明函式的引數為int型別,而之後再與int結合,說明p是一個指向有一個整形引數且返回型別為int
型的函式的指標。 (即為函式指標)。 (8)、int*(*p(int))[];//p先與()結合,觀察括號內部為int,說明p為一個函式,函式的引數為int型,之後p再 與*結合,說明函式返回為一個指標,之後回到外層,與[]結合,說明函式返回的指標指向的是陣列,之後再與*結合, 說明函式返回的指標指向的陣列中的元素為指標型。最後與int結合,說明指標所指向的內容為int型。**所以p為引數為 整型的且返回一個指向由整型指標變數組成的陣列的指標變數的函式。**