原创  第二章 语法“陷阱” 收藏

2.1 理解函数声明

a. 对这个语句的理解:

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

   (void (*)())为一个函数指针的声明符。这个语句的意思就是把0强制转换成(void (*)())的函数指针。

   (*(void (*)())0)();的意思就是引用这个函数指针。

  总的理解为:将存储位置为0的指针强制转化为一个void (*)())的函数指针,并调用。

b. (* fp)();

   如果fp是一个函数指针,那么我们在引用该指针的时候,必须注意*fp两边的括号。因为()的优先级比*高,所以如果没有这个括号的话,就成了* (fp()). ANSI C中,* (fp())有另外的意思,是*((* fp)())的简写形式。

发表于 @ 2005年11月19日 16:30:00 | 评论( loading... ) | 编辑| 举报| 收藏

新一篇:第三章 语义“陷阱”

  • 发表评论
  • 评论内容:
  •  
Copyright © azhen
Powered by CSDN Blog