C语言之理解(*(void (*)())0)()和signal函数
生活随笔
收集整理的這篇文章主要介紹了
C语言之理解(*(void (*)())0)()和signal函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、需要理解的表達式
計算機啟動的時候,硬件將要調用首地址為0位置的子例程,表達式如下 (*(void (*)())0)();
2、解釋
我們知道void (*f)() f是指向返回值為void類型的函數
因此,(void (*)())表示指向返回值為void類型的函數的指針的類型強制轉換符
我們調用函數指針的時候一般這樣使用 (*f)() 在ANSI C標準里面我們簡寫為f()
我們也知道*f()實際與*(f())的含義完全一樣,在ANSI C標準里面把它作為*((*f)())的簡寫形式
硬件將要調用首地址為0位置的子例程,我們一半寫成這樣(*0)() 但是運算符*必須要一個指針來做操作數,而且這個指針應該是函數指針,我們必須把0強轉為函數的指針的類型
所以為(void (*)())0,然后我們調用就就可以這樣寫(*(void (*)())0)()
3、簡寫
(*(void (*)())0)()
簡寫如下
typed void (*fun)();
(*(fun)0)();
總結
以上是生活随笔為你收集整理的C语言之理解(*(void (*)())0)()和signal函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android之解决布局文件图片太大同步
- 下一篇: C语言之rand()和srand()函数