我正在学习C,我得出以下表达式:
void *(*routine)(void *)
我觉得很混乱。也许是指针...指向指针...指向指针?
如果我想将此东西传递给函数,我们将如何处理它?我试图将此例行构造作为参数传递给采用void(*)(void)
...的函数,但我实际上对这实际上意味着什么迷失了。
void *(*routine)(void *);
声明一个指向函数的指针,该函数采用type的参数void *
并返回type的指针void *
简单的例子:
#include <stdio.h>
void* foo(void* x) {
printf("Hello.");
}
int main(void) {
void *(*routine)(void *);
routine = foo; // assings foo to our function pointer
(*routine)(NULL); // invokes foo using this pointer
return 0;
}
输出: Hello.
“如果我想将此东西传递给函数”〜这是为您提供的示例2:
#include <stdio.h>
void* foo(void* x) {
printf("Hello.");
}
typedef void *(*RoutinePtr)(void *); // alias to make your life easier
void routineInvoker(RoutinePtr routine) {
(*routine)(NULL); // invokes the routine
}
int main(void) {
RoutinePtr routine = foo; // creates a function pointer
routineInvoker(routine); // and passes it to our invoker
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句