c语言中((void(*)(void(*)(void(*)())))0)((void(*)(void(*)()))0)啥意思

这么无聊的东西目测只会在考试中才会出现( (void(*)( void(*)( void(*)() ) )) 0 ) ( (void(*)( void(*)() )) 0 )你这个明显是两个语句,两个都是把0进行强制类型转换成了一个函数指针第一个函数指针返回值是void,有一个参数,这个参数是一个函数指针,返回值是void,也有一个参数,这个参数又是一个函数指针,返回值是void,没有参数。第二个函数指针返回值是void,有一个参数,这个参数是一个函数指针,返回值是void,没有参数。这种题目关键就在于找匹配括号对,然后把关键的部分一个个分开来,就容易得出结论。这种代码在现实中是不会写的,一般来说会用typedef来定义别名,如typedef void(*FuncWithoutArg)();typedef void(*FuncWithOneArg)(FuncWithoutArg);typedef void(*Func)(FuncWithOneArg);((Func) 0) // 第一句((FuncWithOneArg) 0) // 第二句这样写就明确多了。


    推荐阅读