2.1 理解函数声明
a. 对这个语句的理解:
(*(void (*)())0)();
(void (*)())为一个函数指针的声明符。这个语句的意思就是把0强制转换成(void (*)())的函数指针。
(*(void (*)())0)();的意思就是引用这个函数指针。
总的理解为:将存储位置为0的指针强制转化为一个void (*)())的函数指针,并调用。
b. (* fp)();
如果fp是一个函数指针,那么我们在引用该指针的时候,必须注意*fp两边的括号。因为()的优先级比*高,所以如果没有这个括号的话,就成了* (fp()). ANSI C中,* (fp())有另外的意思,是*((* fp)())的简写形式。