typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_thandler);
此处由于加了typedef自定义了一个新类型sighandler_t,所以第二行的函数原型看起来顺眼多了,形式跟intfunc(char c, int i)无异,但是如果看不懂typedef语句,这两句话仍然是噩梦。
要理解typedef,只要记住一句话就差不多了,那就是:typedef在语句中所起的作用只不过是把语句原先定义变量的功能变成了定义类型的功能而已。我们只消看几个例子立即明白。
例如语句
现在,回过来看上面的这个函数原型
再来做一个更酷的练习,请看:typedef char *(* c[10])(int**p);
去 掉typedef就变成char *(* c[10])(int**p),先不管这个语句有多难看,它一定是声明了一个拥有10个元素的数组c对不对?okay没什么了不起的,只不过这个数组c的元素有点特别,它们都是函数指针,并且它们所指向的这些函数统统都接受一个二级指针然后返回一直指向字符型的指针。加上typedef之后,c就不是一个数组了,而是一种类型了,什么类型现在你能说出来了吧。 ^_^
原文转自http://blog.sina.com.cn/s/blog_7090a2d1010163ol.html。多谢作者!