名字有點繞口,其實更應該翻譯為指標函式陣列.
記錄下對head-first c這一節的理解,幾乎每天班車上都會咪兩眼,幾乎每次都是看不懂,敲一敲的時候才有些明白.
通俗點講,這功能解決的是,具有同種簽名的方法的陣列式呼叫. 還是不夠通俗,書上講的很通俗:分手信生成器.
對號入座,這是士兵結構體,包含名字以及回信內容型別
enum response_type ;typedef struct
response;
回信內容所呼叫的方法:
void dump(response r)void second_chance(response r)
void marriage(response r)
////函式指標陣列
////
//定義說明:
////void 必須是void型別
//(*replies) 陣列宣告,注意是指標陣列,需要用*
//(response) 函式接收的引數型別,若有多個,應該是:型別,型別。。。
// 函式列表,dump,second_chance,marriage是函式名,注意不是列舉值,列舉值是大寫的
////
//呼叫方法:
//(replies[r[i].type])(r[i])
////其實就是:
//函式名(引數列表)
////
//函式名:
//(replies[r[i].type])
////r是struct型別,type是列舉型別,列舉型別從0開始
//所以上面的這句如果直接寫死的話可以寫為:
//(replies[0]),
//也就是說r[i].type取得了乙個索引,這個索引決定了要呼叫的方法的索引:
////
//r[0].type=dump,也就是呼叫dump方法,
//然後為dump方法準備傳入引數:r[i]
////引數列表:
//例如:dump(response r)接收struct response的型別,所以為其準備的引數r[i]就是這種型別
void (*replies)(response)=;
int main(), ,
, ,
, }; int i,len=0;
get_array_len(r,len);
for(i=0;i*/
(replies[r[i].type])(r[i]); }
return 0;
}
c 陣列指標 指標陣列 函式指標
優先順序比 高,低於 根據這個原則去判斷 陣列指標 陣列指標即陣列的指標,是乙個指標,指向乙個陣列 也稱為行指標 int p 2 可以理解為int 2 p,但是不能這樣子定義 p是乙個指標,指向乙個陣列,陣列元素是int長度為2 二維陣列可以賦值給陣列指標 int a 3 4 int p 4 p a...
C語言 函式,函式指標 指標陣列,陣列指標。
include char fun1 char p,char a char fun2 char p,char a char fun3 char p,char a int main char pfun char p,char a 第6行使函式指標指向我們自定義的fun1函式。第7行是通過函式指標去呼叫我...
C語言 函式指標 函式指標陣列 函式指標陣列的指標
1.定義理解 函式的位址可以通過取位址函式名拿到,也可以通過函式名直接拿到。2.函式指標 1 定義乙個函式test void test char str intmain 2 函式指標的使用 呼叫函式test,傳參 zhangsan p zhangshan 這裡的 沒有起作用,它是讓我們知道這是乙個指...