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