假设有如下代码,你声明了一个函数指针funa

1
int *funa (int k);

编译器就知道这一行声明了一个函数指针,其指向的函数接收一个int类型的参数,返回值为int

现在项目经理给编译器作者说,“我要有一个typedef的功能,要能给某个类型起别名。”

编译器作者说:“你不早说,我代码都写完了”。

抱怨归抱怨,编译器作者但还是得写,那就用之前的轮子吧

1
typedef int *Funa (int k);

项目经理说:“这不就何之前一样了吗”

编译器作者说:“谁让你不早说,这样我就能直接拿轮子了”

项目经理说:“也好,这样也好记住”。

那么:

1
2
Funa p1;
int *p2 (int k)

p1p2是等价的。

因为Funaint * (int k)是一个类型,p1p2是一个类型。

参考

如何理解 C 语言中的 typedef ? - 霄池的回答 - 知乎