代码
void voidFunc1(int);
void *voidFunc2(int);
void execVoidFunc1(void (*voidFunc)(int)) {
voidFunc(0);
}
void execVoidFunc2(void *voidFunc(int)) {
voidFunc(0);
}
void execVoidFunc3(void voidFunc(int)) {
voidFunc(0);
}
int main() {
execVoidFunc1(voidFunc1);
execVoidFunc2(voidFunc2);
execVoidFunc3(voidFunc1);
}
说明
voidFunc1是一个返回类型为void的函数
voidFunc2是一个返回类型为void*的函数
execVoidFunc1是一个标准的函数指针做形参的用法
execVoidFunc3和execVoidFunc1是等价的,编译器会自动将void p()补全,翻译成void (*p)()
execVoidFunc2和execVoidFunc3性质是差不多的,只是返回类型为void*,而不是void
execVoidFunc2的完整形式为void execVoidFunc2(void* (*voidFunc)(int))