高階(複雜)指標的含義

2021-07-28 18:31:31 字數 2124 閱讀 6244

備用知識

指標陣列: int *p[10];

陣列指標: int (*p)[10];

函式宣告: int* f( ); //f是乙個返回int*指標的函式

函式指標: int (*p)( );

【突破口】

——當前變數是函式?陣列?指標?某種型別的強制轉換?

學會把解析完的內容看成乙個整體!

(1)是函式:明確函式的形參與返回值

(2)是指標陣列:明確指標陣列的元素的型別

(3)是陣列指標:明確指標指向的陣列的元素型別

(4)是函式指標:明確函式指標指向的函式的形參與返回值

(5)是某種型別的強制轉換:型別進行用括弧()括起來,後邊跟著乙個其他型別的變數,見特例(* (void(*)())0) ()解讀

高階(複雜)指標的含義

解讀下面的幾個很好的例子

int

*(*p)[10]; //p是乙個指標(p指向乙個陣列(該陣列的元素型別是int

*))int

**(*p[6])(); //p是乙個陣列(該陣列的元素型別是int

*的指標(該指標是乙個指向形參為void返回值為int

**的函式指標))

int*(

*p())(); //p是乙個函式(該函式形參為void,返回值是int

*型別的指標(該指標又是乙個指向形參為void,返回值為int

*型別的函式指標))

int (**(*p)())(); //p是乙個指標(p指標指向形參為void,返回值為int

**的二級指標(該二級指標是形參為void,返回值為int型別的函式指標))

int (*(

*p)())[6]; //p是乙個函式指標(p指向形參是void,返回值是int

*型別的指標(該返回的指標指向乙個陣列(陣列元素是int型別)))

char* (*p[3])(char* p);//p是乙個陣列(陣列元素為char*型別的指標(該指標指向形參為char*,返回值為char*型別的函式))

int*(

*(*(

*p)())[6])() //p是乙個函式指標(p函式指標指向形參是void,返回值是int

*的指標(該返回的指標指向乙個陣列(陣列型別為int

*指標(int

*指標又指向形參為void,返回值為int

*的函式))))

(* (void(*)())0) ()解讀

(*(void(*)())0) ()

//等價於(*(void(*p)())0)()

//void(*p)():p是乙個函式指標(指向形參為void,返回值為void的函式),實際上void(*p)()是一種型別,可用作強制轉換

//(void(*p)()) 0 :把0強制轉換成上述說的void(*p)()型別,該型別是函式指標型別

//*(void(*p)())0 :轉換完成後,用*進行間接訪問函式指標裡邊的內容(因為是該指標是函式指標,因此用*訪問該指標得到的內容肯定是某個函式的名稱,即該函式的位址)--->因此*(void(*p)())0的含義是取出0位址處的函式的位址

//(*(void(*)())0) () :因為上面已經取出了函式的位址,(*(void(*)())0) () 就是函式指標的呼叫形式。

【擴充套件】解讀(*(char** (*)(char**,char**))0)(char**,char**)

高階(複雜)型別轉換符

如何獲得某個型別的型別轉換符?

①首先宣告乙個給定型別的變數;

②然後把宣告中變數名和宣告末尾的分號去掉;

③最後將剩餘的部分用乙個括號整個「封裝」起來即可。

例: float (*p)();//宣告p是乙個指向形參為void返回值為float的函式指標

(float (*)()) //表示乙個「指向形參為void返回值為float的函式指標」的型別轉換符

各種指標的含義

int hoge hoge是指向int的指標 int hoge hoge是指向int的指標的陣列 int hoge hoge是指向int型陣列的指標 int func int func是指向返回int 引數為int的函式的指標 int func table 10 int a func table是返...

滑鼠指標含義

default 預設游標 通常是乙個箭頭 auto 預設。瀏覽器設定的游標。crosshair 游標呈現為十字線。pointer 游標呈現為指示鏈結的指標 乙隻手 move 此游標指示某物件可被移動。e resize 此游標指示矩形框的邊緣可被向右 東 移動。ne resize 此游標指示矩形框的邊...

演算法複雜度的含義

o 1 輸入資料增大多少倍,耗時 耗空間都不變。雜湊演算法就是典型的 o 1 時間複雜度,無論資料規模多大,都可以在一次計算後找到目標。o n 資料量增大幾倍,耗時也增大幾倍 o n 2 資料量增大 n 倍時,耗時增大 n 的平方倍 o logn 當資料增大 n 倍時,耗時增大 logn 倍 例如 ...