函式指標陣列的例子

2021-06-20 16:03:34 字數 1869 閱讀 5286

來看這麼一段**:

#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 申明變數...