C陷阱与缺陷:经典的 (* (void (*)( )) 0) ( ) 表达式

来源:互联网 发布:淘宝网二度春肾宝 编辑:程序博客网 时间:2024/05/21 17:36

        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位置的函数指针