回覆列表
-
1 # 使用者4506771141567
-
2 # 使用者4506771141567
看後面兩個字:
指標陣列,看後面兩個字,它是一個數組,陣列元素是指標;陣列指標,看後面兩個字,它是一個指標,指向一個數組;函式指標,看後面兩個字,它是一個指標,指向一個函式;指標函式,看後面兩個字,它是一個函式,返回指標型別;指向函式指標的陣列,看後面兩個字,它是一個數組,陣列元素是指向函式的指標,即函式指標。類似地,你可以自己分析一下什麼是 陣列指標陣列,指標陣列指標……#!#%¥#@%!
===============================================================
玩完了文字遊戲,再來看看程式碼吧。比如 int* p[10] 和 int (*p)[10] ,哪個是指標陣列,哪個是陣列指標呢?其實很容易區分,可以按照運算優先順序從低到高的順序依次說出來就得到了其名字(PS:從高到低的順序也可以,那樣的話名字要倒過來唸)。
int* p[10] // 指標運算的優先順序比下標低,所以排列結果是 指標<陣列,所以這是一個指標陣列int (*p)[10] // 加了括號後指標的優先順序更高,所以 陣列<指標,這是一個數組指標int* pfun(int a, int b) // 優先順序 指標<函式,所以這是一個指標函式int (*pfun)(int a, int b) // 函式<指標,所以這是一個函式指標下面可以自己嘗試定義一個函式指標陣列,先把基本定義寫好:
新增函式定義:
新增指標定義,注意要讓指標的優先順序比函式高:
最後新增陣列的定義,要放在變數名旁邊:
看後面兩個字:
指標陣列,看後面兩個字,它是一個數組,陣列元素是指標;陣列指標,看後面兩個字,它是一個指標,指向一個數組;函式指標,看後面兩個字,它是一個指標,指向一個函式;指標函式,看後面兩個字,它是一個函式,返回指標型別;指向函式指標的陣列,看後面兩個字,它是一個數組,陣列元素是指向函式的指標,即函式指標。類似地,你可以自己分析一下什麼是 陣列指標陣列,指標陣列指標……#!#%¥#@%!
===============================================================
玩完了文字遊戲,再來看看程式碼吧。比如 int* p[10] 和 int (*p)[10] ,哪個是指標陣列,哪個是陣列指標呢?其實很容易區分,可以按照運算優先順序從低到高的順序依次說出來就得到了其名字(PS:從高到低的順序也可以,那樣的話名字要倒過來唸)。
int* p[10] // 指標運算的優先順序比下標低,所以排列結果是 指標<陣列,所以這是一個指標陣列int (*p)[10] // 加了括號後指標的優先順序更高,所以 陣列<指標,這是一個數組指標int* pfun(int a, int b) // 優先順序 指標<函式,所以這是一個指標函式int (*pfun)(int a, int b) // 函式<指標,所以這是一個函式指標下面可以自己嘗試定義一個函式指標陣列,先把基本定義寫好:
新增函式定義:
新增指標定義,注意要讓指標的優先順序比函式高:
最後新增陣列的定義,要放在變數名旁邊: