第四章 指针和数组
怪物!!?(*(void(*)())0)()
是不是觉得上一篇的函数指针太简单了,不够刺激?来点刺激的吧....
(*(void(*)())0)(); 这是《C Traps and Pitfalls》这本书里的一个经典例子;没发狂吧,下面我们来分析分析:
第一步:void(*)()这是一个函数指针,这个函数没有参数,没有返回值;
第二步:(void(*)())0 这是将0强制转换为函数指针,0是一个地址,也就是说一个函数保存在首地址为0的一段区域内。
第三步:(*(void(*)())0) 这是取0地址开始的一段内存里面的内容,其内容就是保存在首地址为0的这段区域内的函数。
第四步:(*(void(*)())0) () 这是函数的调用
本文通过一个经典的函数指针示例((*(void(*)())0)()),逐步解析了其工作原理。首先介绍了void(*)()类型的函数指针,然后解释了如何将0强制转换为此类型,并最终调用该地址处的函数。
160

被折叠的 条评论
为什么被折叠?



