這是乙個簡單的法則,但能讓你準確理解所有的宣告。這個法則運用如下:從最內部的額括號開始閱讀宣告,向右看,然後向左看。當你碰到乙個括號時就調轉閱讀的方向。括號內的所有內容都分析完畢就跳出括號的範圍。這樣繼續,直到整個宣告都被宣告完畢。
對上述右左法則做乙個小小的修正:當你在第一次開始閱讀宣告時,必須從變數名開始,而不是從最內部的括號。下面結合例子來演示一下右左法則的使用。
int
*(*(
*fp1) (int) ) [10];
再看幾個例子:
1.
int
*(*(
*arr[5]) () ) ();
arr為函式指標陣列,該陣列的元素指向形參為空,返回值為函式指標的函式。該指標指向乙個形參為空,返回值為int *的函式。
2.
float (*(*b()))();
b為函式,該函式形參為空,返回值陣列指標,該指標指向乙個函式指標陣列,陣列的元素指向乙個形參為空,返回值為float的函式。
3.
void *(*c)(char a, int (*b)());
c為函式指標變數,指向乙個有兩個引數,返回值為void*的函式,第乙個形參為char,第二個形參為函式指標,該指標指向乙個形參為空,返回值為int的函式。
4.
float (*(* e[10])(int *))[5];
e為函式指標陣列,陣列元素指向乙個形參為int *,返回值為陣列指標,指向的陣列為float型陣列。 指標 複雜的宣告
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.向左看...
指標(挑戰複雜的宣告)
ansi c 的標準庫中,有乙個atexit 的函式。如果使用這個函式,當程式正常結束的時候,可以調回乙個指定的乙個函式。原型定義如下 int atexit void func void 怎麼看呢?1.著眼於識別符號。intatexit void func void 2.解釋用於函式的 int at...