分享

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

 Jaylongor 2014-05-23

  (*(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) ();

  

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多