国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

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

分享到微博請遵守國家法律
襄汾县| 兴城市| 朝阳区| 桐城市| 灵山县| 夏津县| 沈阳市| 乐都县| 北海市| 宝山区| 志丹县| 许昌市| 峨山| 许昌县| 丹棱县| 阳高县| 迁西县| 来宾市| 车致| 临邑县| 仙桃市| 万年县| 津南区| 买车| 拉萨市| 吴旗县| 广昌县| 布拖县| 六盘水市| 辽阳市| 汾西县| 龙陵县| 县级市| 灌南县| 寿宁县| 郎溪县| 大竹县| 静安区| 云安县| 嘉善县| 乐山市|