第四章 指针和数组
怪物!!?(*(void(*)())0)()
是不是觉得上一篇的函数指针太简单了,不够刺激?来点刺激的吧....
(*(void(*)())0)(); 这是《C Traps and Pitfalls》这本书里的一个经典例子;没发狂吧,下面我们来分析分析:
第一步:void(*)()这是一个函数指针,这个函数没有参数,没有返回值;
第二步:(void(*)())0 这是将0强制转换为函数指针,0是一个地址,也就是说一个函数保存在首地址为0的一段区域内。
第三步:(*(void(*)())0) 这是取0地址开始的一段内存里面的内容,其内容就是保存在首地址为0的这段区域内的函数。
第四步:(*(void(*)())0) () 这是函数的调用