最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

c語言學習冷知識點1:調用地址為0的函數

2019-12-01 16:17 作者:技術龍的傳人  | 我要投稿

? ? ? ? 初學者看到(*(void (*)0)()會發(fā)怵,不知道在干什么,哪里會用到呢?怎么就調用了地址為0的函數?這么多層括號又如何去分析呢?......

? ? ? ? ? 這些問題可以暴露出你的基礎水平如何(函數調用,強制轉換,函數指針,指針操作),下面來慢慢分析,裝逼時刻到了??。

1.聲明一個函數如下:

? ? ? ? ? void fun();

函數地址為0x0000_0000,掉用它只需要寫fun();即可

2.函數指針寫法如下:

? ? ? ? ? void (*pfun)();

3.若要函數指針指向fun函數,fun函數地址為0,那就強轉fun為函數指針:

(void (*pfun)())fun?

pfun可以省略,fun被0替換,即0強轉為地址,指向fun函數如下:

(void (*)())0

4.調用0地址的函數如下:

(*(void(*)())0)();

(*(void(*)())0)取0地址中的函數后面再加一個()就調用了0地址的函數。

? ? ? ?新手或多或少會有些蒙,有些基礎的是不是覺得很神奇?當然編程老手肯定會說用typedef不就行了,弄這么花哨干什么?

? ? ? ?當然可以用typedef了,后面會分享給大家下一個知識點提到。

? ? ? ?我這是從?c和陷阱?這本書中看到,函數調用一篇中提到的,分享給大家我的學習心得,大家一起學習進步。如果有錯誤請大家及時指出,大家一起討論學習,思路和視野會開闊一些。感謝大家的支持,謝謝!



c語言學習冷知識點1:調用地址為0的函數的評論 (共 條)

分享到微博請遵守國家法律
大石桥市| 镇赉县| 繁昌县| 册亨县| 金湖县| 泸溪县| 托里县| 荣成市| 林周县| 紫云| 梅河口市| 谷城县| 会理县| 甘肃省| 广南县| 莫力| 赤峰市| 磐安县| 许昌市| 高州市| 开江县| 遂宁市| 武隆县| 壤塘县| 六盘水市| 乐至县| 封开县| 许昌市| 贵港市| 许昌县| 玉林市| 梓潼县| 威海市| 全南县| 岢岚县| 鹿泉市| 广安市| 上犹县| 四子王旗| 伊宁市| 革吉县|