(1)從最裡層的圓括號中未定義的標示符看起
(2)首先往右看,再往左看
(3)遇到圓括號或方括號時可以確定部分型別,並調轉方向
(4)重複 2、3 步驟,直到閱讀結束
注意:當讀出是陣列時,須讀出元素個數、元素型別
當讀出是函式是,須讀出引數及型別,返回值型別
當讀出是指標是,須讀出指標所指向的型別,有時也須讀出指標的型別。
① int (*p)(int*, int (*f)(int*));
a、讀未標示符 f,向右遇」)」括號,調轉向左遇*,所以 f 是個指標,返回第 2 步,向右讀右邊的(int *),遇到「(」表示乙個函式,說明 f 是個函式指標,指向乙個函式,該函式引數為int*,返回值為 int 型。
即 f 是個函式指標,至此,f 指標讀完
b、讀 p 未標示符,向右遇」)」括號,調轉向左遇*,所以 p 是個指標,返回第 2 步,向右讀遇 p 指標右邊的「(」括號,說明是個函式,該函式有 2 個引數,乙個為 int*,乙個為 f 函式指標,返回值為 int 型,
即 p 是個函式指標,指向兩個引數,分別為 int*和函式指標型,返回值為 int 型的函式指標。
②int (*p[5])(int*)
a、讀指標 p,向右,說明 p 是陣列,該陣列有 5 個元素,每個元素的型別為指標型別,它們指向乙個函式,該函式引數為 int*,返回值為 int 型。
b、綜上:p 為乙個陣列,有 5 個元素,每個元素是乙個函式指標,它們指向乙個引數為int*,返回值為 int 的函式。
③int (*(*p)[5])(int*);
a、讀指標 p,向右遇)括號,向左*,說明 p 是指標,部分確定型別回第 2 步,向右,說明 p 指標指向乙個陣列,該陣列有 5 個元素,每個元素為指標,這個是個函式指標,
指向引數為 int*,返回值為 int 型的函式。
b、綜上:p 為乙個陣列的指標,該陣列有 5 個元素,每個元素為都是乙個函式指標,函式引數為 int*,返回值為 int 型。
④int (*(*p)(int*))[5];
a、首先 p 是個指標,指向函式,該函式引數為 int*,返回值為指標。這個返回值指向乙個陣列,該陣列有 5 個元素,每個元素為 int 型。
b、綜上:p 是個函式指標。該函式:引數:int*,返回值是個陣列指標,指向 5 個 int 型元素的陣列。
⑤void (*func(void (*p)(void *)))(void *)
a、func 首先是個函式 :引數為 p,p 是個函式指標,指向是引數為 void*,返回值為 void 的函式。返回值是乙個指標,指向乙個引數為 void*,返回值為 void 的函式。即返回值是乙個函式指標。
b、綜上,func 是個函式,引數是函式指標 p,返回值也是函式指標。
C語言學習筆記 指標
若觸過組合語言,那麼理解學習c語言中指標就很簡單了。指標,在彙編裡面的表現形式,無非就是定址,直接定址和間接定址。先來學習下,c語言中的4大類資料型別 基本型別 int,long,float,char 構造型別 陣列,結構體 struct,聯合體 union,列舉型別 enum 指標型別 int l...
C語言學習筆記 指標
c語言要玩的好,指標是核心,但是指標在學習的時候看教程往往感覺一看就明白,但是實際用的時候一用就錯,而且還不知道錯在哪。為了更加深刻的了解指標,將學習過程記錄下來,依次加深對指標的理解。先看看一段測試 void fun void int main void 定義乙個變數a,值為100,然後定義乙個一...
C語言學習筆記 指標
get新知識 1 指向二維陣列的指標,如指向int a 3 4 的指標int p 4 p指的是第0行第乙個位址 注意是位址 p 1 指的是第1行第乙個位址,以此類推 p i j 表示第i行第j列的元素。二維陣列本質也是一維陣列。每一行相當於乙個元素。2 指向函式的指標 作用 可以作為另乙個函式的引數...