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

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

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的函數的評論 (共 條)

分享到微博請遵守國家法律
府谷县| 游戏| 隆德县| 大名县| 绥中县| 杂多县| 元江| 宁波市| 兖州市| 秦皇岛市| 朔州市| 陇西县| 巴青县| 宜章县| 焦作市| 阿鲁科尔沁旗| 泉州市| 永定县| 兴城市| 扶沟县| 大石桥市| 桂阳县| 赤峰市| 万山特区| 渑池县| 达拉特旗| 彝良县| 舟山市| 天水市| 威海市| 淳化县| 宝应县| 华阴市| 工布江达县| 登封市| 东乡族自治县| 灵寿县| 宿迁市| 蕲春县| 荃湾区| 漳平市|