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