`
java-mans
  • 浏览: 11435355 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

第四章 指针和数组

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

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

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

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

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

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

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics