(*(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) ();
当走散了,走晕了,走累了,走烦了,告诉自己:星星在这里,陪着你,陪着我。