有关void和指针的问题

时间:2019-05-09 00:55:22

标签: c

我目前正在学习c语言。但是,我对下面的代码有些困惑:

  

void(* fn_test)(void * pData);

1 个答案:

答案 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