我目前正在学习c语言。但是,我对下面的代码有些困惑:
void(* fn_test)(void * pData);
答案 0 :(得分:1)
这是一个函数指针。变量fn_test
是指向一个函数的指针,该函数采用单个void *
参数,不返回任何值。
换句话说,您可以执行以下操作:
#include <stdio.h>
void myFn(void *x) {
printf("%p\n", x);
}
int main(void){
int a = 10;
void (*fn_test)(void*);
fn_test = myFn;
fn_test(&a); // Calls myFn
}
如果您想了解这样的事情,可以使用cdecl
工具,该工具在许多发行版中都可用,并且几乎肯定也可以在Windows上下载:
cdecl> explain void (*fn_test)(void*)
declare fn_test as pointer to function (pointer to void) returning void
或使用在线版本here。