( * (void (*) ( ) ) 0 ) ( ) ;
到底是什么?这个出自<<C陷阱与缺陷>> 这本书,可以下去搜索一下,我也是今天才看到这个例子,作为初学者,这个列子很好的带领我们重新回顾了指针的操作
也体现出指针的博大精深"也可以说为一种缺陷",因为他总是让人难理解(至少我目前这个阶段是这样)
这个语句的意思是 调用首地址为0位置的子例程
这个语句应该出现在独立运行于某种微处理器的程序中,而不是我们普通Pc机上.
这样的函数让我这个萌新是很懵逼的,慢慢往后看解释,才理解了这个语句.
首先,要理解这种,就要理解变量的声明
举几个例子:
float f;
float f();
float *f;
float *f();
float (*f)();
看到这些列子你可以停下观看,写下来对这些声明,再回来看
float f;
声明含义是:对其求值时,表达式f(也就是变量)的类型为浮点数类型(float)
float f();
声明的含义是:表达式ff() (也就是函数ff)求值的结果是一个浮点数,也就是说ff是一个返回值为float类型的函数
float *f;
声明的含义是:*f是一个浮点数,也就是说pf是一个指向浮点数的指针
float *f();
从运算关系上来看 () 符号优先级高于 * 这个符号,所以f先和()结合,也可以写成 *(f()), f()和<