C语言深度解剖(精讲版)——读书笔记23 &&自己的一些理解

来源:互联网 发布:数码视讯 知乎 编辑:程序博客网 时间:2024/05/17 02:45

第四章  指针和数组

怪物!!?(*(void(*)())0)()

是不是觉得上一篇的函数指针太简单了,不够刺激?来点刺激的吧....

(*(void(*)())0)() ;这是《C  Traps  and  Pitfalls》这本书里的一个经典例子;没发狂吧,下面我们来分析分析:

第一步:void(*)()   这是一个函数指针,这个函数没有参数,没有返回值;

第二步:(void(*)() )这是将0强制转换为函数指针,0是一个地址,也就是说一个函数保存在首地址为0的一段区域内。

第三步:(*(void(*)() )0这是取0地址开始的一段内存里面的内容,其内容就是保存在首地址为0的这段区域内的函数。

第四步:(*(void(*)() )0)()   这是函数的调用

原创粉丝点击