对函数指针与typedef的理解:typedef void (*sighandler_t)(int)
文章目錄
- 緣由
- 解釋函數(shù)指針int (\*f)(int*);
- 解釋typedef void(*sighandler_t)(int)
緣由
2021年9月22日在刷CS:APP的時(shí)候,邂逅了一種函數(shù)指針與typedef結(jié)合的寫(xiě)法:typedef void (*sighandler_t)(int)
來(lái)源:CSAPP第三版
解釋函數(shù)指針int (*f)(int*);
對(duì)于以下聲明:
int (*f)(int*);要從f開(kāi)始往外讀。 首先(*f)表明f是一個(gè)指針;(*f)(int*)表明f是一個(gè)指向函數(shù)的指針,這個(gè)函數(shù)以int*作為參數(shù)。
總的來(lái)看,f是一個(gè)指針,指向一個(gè)函數(shù),該函數(shù)的參數(shù)是 int *型, 返回值是int型。即,f被聲明為一個(gè)函數(shù)指針。
這里需要注意的一點(diǎn)是, *f兩邊的括號(hào)是必需的,否則聲明變成:
int *f(int *);它會(huì)被解讀為
(int *) f(int *);也就是說(shuō),它會(huì)被解釋為一個(gè)函數(shù)原型,聲明了一個(gè)函數(shù)f,它以int * 作為參數(shù),返回值類(lèi)型為int *.
解釋typedef void(*sighandler_t)(int)
理解了函數(shù)指針的聲明,那么對(duì)于
typedef void(*sighandler_t)(int)的理解就可以展開(kāi)了。
這里為一個(gè)函數(shù)指針指定了別名:sighandler_t
sighandler_t 是一個(gè)函數(shù)指針,它指向這樣一個(gè)函數(shù):參數(shù)是int型,返回值是void型,即無(wú)返回值。
下面是別名的使用:
sighander_t signal(int signum, sighandler_t handler);聲明signal是一個(gè)函數(shù),它有兩個(gè)參數(shù),其一是int型的signum,其二是sighandler_t型(函數(shù)指針型)的handler; 函數(shù)signal的返回值類(lèi)型也是sighandler_t型(函數(shù)指針型)。
參考:CSAPP 第三版
總結(jié)
以上是生活随笔為你收集整理的对函数指针与typedef的理解:typedef void (*sighandler_t)(int)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 操作系统第二章 进程管理
- 下一篇: Leetcode剑指 Offer II