指標(挑戰複雜的宣告)

2021-08-20 21:51:08 字數 1085 閱讀 6475

ansi c 的標準庫中,有乙個atexit()的函式。如果使用這個函式,當程式正常結束的時候,可以調回乙個指定的乙個函式。

原型定義如下

int atexit(void (*func)(void));
怎麼看呢?

1.著眼於識別符號。 

intatexit

(void (*func)(void));

2.解釋用於函式的()。

int atexit(void (*func)(void));

英語的表示式為:

atexit is function() returning

3.函式引數部分比較複雜,先解析這個部分。同樣,先著眼於識別符號。

int atexit(void (*func)(void));英語表示式為:

atexit is function(func is) returning

4.因為有括號,解釋 「 * 」 。int atexit(void (*func)(void));

英語表示式為:

atexit is function(fun is pointer to) returning

5.解釋用於函式的()。這裡的引數是void(無引數)。

int atexit(void (*func)(void));

英語表示式:

atexit is function(func is pointer to function (void)returning )returning 

6.解釋型別指定符void。從而結束了對atexit 的引數部分的解釋

英語表示式:

atexit is function(func is pointer to function (void)returning void)returning 

7.解釋資料型別符int

英語表示式:

atexit is function(func is pointer to function (void)returning )returning int

8.翻譯成中文……

atexit 是返回int的函式(引數是指向返回void 沒有引數的函式的指標)。

複雜指標宣告

這是乙個簡單的法則,但能讓你準確理解所有的宣告。這個法則運用如下 從最內部的額括號開始閱讀宣告,向右看,然後向左看。當你碰到乙個括號時就調轉閱讀的方向。括號內的所有內容都分析完畢就跳出括號的範圍。這樣繼續,直到整個宣告都被宣告完畢。對上述右左法則做乙個小小的修正 當你在第一次開始閱讀宣告時,必須從變...

指標 複雜的宣告

int fp1 int 10 1.從變數名開始 fp1 2.往右看,是 因此往左看,是 乙個指標 3.跳出括號,碰到了 int 乙個帶乙個int引數的函式 4.向左看,發現乙個 函式 返回乙個指標 5.跳出括號,向右看,碰到 10 乙個10元素的陣列 6.向左看,發現乙個 指標 7.向左看,發現in...

指標 複雜的宣告

int fp1 int 10 閱讀步驟 1.從變數名開始 fp1 2.往右看,是 因此往左看,是 乙個指標 3.跳出括號,碰到了 int 乙個帶乙個int引數的函式 4.向左看,發現乙個 函式 返回乙個指標 5.跳出括號,向右看,碰到 10 乙個10元素的陣列 6.向左看,發現乙個 指標 7.向左看...