來看這麼一段**:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
enum response_type;
typedef struct
response;
void dump(response r)
void second_chance(response r)
void marriage(response r)
int main()
, , ,
}; int index;
for (index = 0; index < 4; index++) }
return 0;
}
這個程式是可以執行的,並且是正確的。但是**中充斥著大量的函式呼叫,每次都需要根據r的type來呼叫函式,看起來像這樣:
switch (r.type)
這麼一來,如果增加
r的第四種型別,那就不得不修改程式中每乙個像這樣的地方。很快,就有一大堆**需要維護,而且這樣很容易出錯。
下面來看,如何通過建立函式指標陣列來替代上面的這些**:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
enum response_type;
typedef struct
response;
void dump(response r)
void second_chance(response r)
void marriage(response r)
void (*replise)(response) = ;
int main()
, , ,
}; int index;
for (index = 0; index < 4; index++)
return 0;
}
可以看到,我們這裡已經沒有了那麼一大段的switch**。但是程式依然是和上邊的初始程式一樣的執行結果。
就這麼一行**,代替了上面的一大段
switch
**!
那麼我們現在來看增加
r的第四種型別時候的代價:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
enum response_type;
typedef struct
response;
void dump(response r)
void second_chance(response r)
void marriage(response r)
void dead(response r)
void (*replise)(response) = ;
int main()
, , , ,
, };
int index;
for (index = 0; index < 5; index++)
return 0;
}
對比一下,可以看到,僅僅需要修改3個地方,便能夠加入乙個對應的函式!維護代價大大的減少了!
函式指標,函式指標陣列,函式指標陣列的指標
函式指標的使用 先看如下例子 include include char fun char p1,char p2 else int main 我們使用指標的時候,需要通過鑰匙 來取其指向的記憶體裡面的值,函式指標使 用也如此。通過用 pf 取出存在這個位址上的函式,然後呼叫它。這裡需要注意到是,在 v...
函式指標 函式指標陣列 函式指標的陣列的指標的概念
首先讓我們看一段 int add int x,int y int main 這是結果 這是我們add函式的位址,我們給出函式的指標變數用來存放某一函式的位址。int p int int 定義p為乙個指向函式的指標變數,它可以指向函式的型別為整型且有兩個整型引數的函式。注 如果寫成 p int,int...
指標陣列 陣列指標 函式指標 函式指標陣列
陣列指標 指向陣列的指標,是乙個指標,其指向的型別是陣列 指標陣列 元素為指標的陣列,是乙個陣列,其中的元素為指標。例如 int a 5 這個是陣列指標。int a 5 這個是指標陣列。定義函式指標型別 int max int,int typedef int fun ptr int,int 申明變數...