C功能指针分配

时间:2015-01-09 19:59:37

标签: c embedded function-pointers

就我声明一个函数指针时所读到的,没有分配到左侧或右侧。但是我在C源文件中有许多函数指针,并且所有函数都在下面的赋值形式中使用:

void (*pbindRemoveDev)( zAddrType_t *Addr ) = (void*)NULL;

任何人都可以帮我理解(void *)NULL部分吗?

这是一个嵌入式代码。

3 个答案:

答案 0 :(得分:5)

中没有作业
void (*pbindRemoveDev)( zAddrType_t *Addr ) = (void*)NULL;

正在将函数指针pbindRemoveDev初始化为NULL。以下是作业

void RemoveDev( zAddrType_t *Addr );
pbindRemoveDev = RemoveDev // Assignment

答案 1 :(得分:2)

这就像:

int a;

但这里的类型是:

void (*)(zAddrType_t*)

是的,你可以做int a = 0;

答案 2 :(得分:1)

这是一个函数指针声明。您的代码将其初始化为NULL。

void (*pbindRemoveDev)( zAddrType_t *Addr ) = (void*)NULL;

不知道你正在使用的编译器,正确的初始化可能是

void (*pbindRemoveDev)( zAddrType_t *Addr ) = NULL;

如果调用函数指针,它将崩溃,因为您指向的是NULL内存地址。

下面是函数指针初始化示例:

 #include <stdio.h>

 void bar(int x)
 {
      printf( "%d\n", x );
 }

 int main()
 {

        void (*foo)(int) = &bar;
        foo(10); //This prints 10.

        return 0; 
}