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)代表,等等
傳送門:typedef void (*funcptr)(void)的含義 - not_give_up_的博客 - CSDN博客 https://blog.csdn.net/not_give_up_/article/details/80800621
ref:C基礎--關於typedef的用法總結 - aaronGao - 博客園 https://www.cnblogs.com/aaronLinux/p/5769167.html
