通用函數指針:typedef void (*funcptr)(void)的含義(轉載)

fun a;//等價於void (*a)();
這樣聲明起來就方便多了

void (*a)();表示a是個指針,指向一個不帶參數、返回值爲空的函數

 



定義一個函數指針類型。
比如你有三個函數:
void hello(void) { printf("你好!"); }
void bye(void) { printf("再見!"); }
void ok(void) { printf("好的!"); }

typdef void (*funcptr)(void);
這樣就構造了一個通用的函數
你用的時候可以這樣:
void speak(int id)
{
   funcptr words[3] = {&hello, &bye, &ok};
   funcptr fun = words[id];
   (*fun)();
}

這樣的話,如果speak(0)就會顯示“你好!”
speak(1)就會顯示“再見!”
speak(2)就會顯示“好的!”

用於處理參數和返回值的形式都一樣,但是功能不確定的一組函數,可以使用函數指針

比如算術運算符,加、減、乘、除,都可以用typedef int (*calc)(int,int)代表,等等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章