CS:APP浮点部分写了一半,比较纠结。
去大波那里看了下,发现他在Qzone留言一个C题目,并且大言不惭的问谁会,于是果断解决了 🙂
试解释(*(void(*)())0)(); 是什么意思?
很简单的代码,却很有意思,谁会?
记得之前在书上看过,记得不太清楚了,自己又重新试了一下,不知道准不准确。
(*(void(*)())0) | (); 分离第一步,确定是一个函数,调用"(void(*)())0" 的函数指针使其运行。
(void(*)()) | 0 分离第二步,确定是一个强制类型转换,使用"void(*)()" 强制类型转换。
void(*) | () 分离第三布,确定是一个函数。
所以他总体的意思是: 运行在内存0位置的函数。
最早的出处在《C语言陷阱与缺陷》。