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