(*(void(*)())0) ();

  (*(void(*)())0) ();

  在《C陷阱与缺陷》中解释如下:

  float f,g;  //表达式f、g的类型为浮点型

  float ff();  //表达式ff()的求值结果为浮点型

  float *pf;  //表达式*pf是一个浮点数,pf是一个指向浮点数的指针

  float *g(), (*h) ();  // float *g() == float *(g()), g是一个函数,函数的返回类型为一个指向浮点数的指针,h是一个函数指针,h所指向的函数返回类型为浮点型。

  float (*h) ();  // 表示h是一个指向返回值为浮点类型的函数的指针。

  (float (*) ())  //表示一个“指向返回值为浮点类型的函数的指针”的类型转换符。

  void (*fp) ();  //调用存储位置为0的子例程

  (void (*) ()) //表示一个“指向返回值为void类型的函数的指针”的类型转换符。  

  (void(*)()) 0  //0表示为子例程的默认初始值,这里表示将子例程强制转换为指向返回值为void类型的函数的指针。 

  调用子例程时,使用以下语句:

  void (*fp) ();

  (*fp) ();

  (void(*)()) 0  代替fp

  即:(*(void(*)())0) ();

  

 

posted @ 2012-03-11 22:04  arrow'  阅读(538)  评论(0编辑  收藏  举报