1、   (*(void(*) ())0)();


这是《C Traps and Pitfalls》这本经典的书中的一个例子。


第一步:void(*) (),可以明白这是一个函数指针类型。这个函数没有参数,没有返回值。


第二步:(void(*) ())0x46EF01,这是将

0x0046EF01强制转换为函数指针类型,

0x0046EF01是一个地址,也就是说


一个函数存在首地址为

0x0046EF01的一段区域内。


第三步:(*(void(*) ())0),这是取0 地址开始的一段内存里面的内容,其内容就是保存


在首地址为0 的一段区域内的函数。


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