C缺陷与陷阱第二章中提到了一个经典的(* (void (*)( )) 0) ( )表达式,如书中所说,也许很多人第一次看到这个表达式会有些“不寒而栗”,细细品味一下还是很有意思的。
这个表达式确实经典,下面简单的分析一下:
int m; 变量,定义一个int类型变量
int ((n)); 变量,定义一个int类新变量
int fuc(); 函数,返回值为int类型
int *m; 变量 ,int指针类型变量
int *fuc(); 函数,返回值为int指针类型的
int (*m); 变量,int指针类型
void (*m)(); 函数,返回值为void类型
void (*)(); 函数,返回值为void类型
(void (*)()) 0; 强制转换为void类型,从而得到下表达式
(* (void (*)( )) 0) ( ) 函数, (void (*)( )) 0 其实就是指向首地址为0位置的函数指针