在结构中使用函数指针数组时崩溃

时间:2013-09-18 13:47:40

标签: c structure function-pointers

当我在结构中使用函数指针数组时,程序崩溃。

#include <stdio.h>

typedef void (*FUNCPTR)(void);

void Function_1()
{
    printf(" In Function_1 \n");
}
void Function_2()
{
    printf(" In Function_2 \n");
}

typedef struct St_FUNCPTR
{
    FUNCPTR xxx[2];  
}ST_FUNCPTR;

FUNCPTR fnptr1[2] =
{
    Function_1,
    Function_2
};

ST_FUNCPTR fnptr =
{
    fnptr1 

};

/* The intention is to call Function_1(); through array of function 
   pointers in the structure. */  

int main()
{
    // to call Function_1();
    fnptr.xxx[0]();
    return 0;
}

如果结构定义如下,它可以正常工作。

ST_FUNCPTR fnptr =
{
    {Function_1,Function_2},
};

我的问题在哪里?

1 个答案:

答案 0 :(得分:0)

我的投注在这里:

ST_FUNCPTR fnptr =
{
    fnptr1 

};

您要做的是初始化结构,哪个元素是带数组的数组。 fnptr1是一个指向函数的指针数组 有了你的编辑肯定。你不能用另一个数组初始化数组,就像你不能说int a1 [10] = int b [10] 为了澄清:fnptr1这里是指向函数指针的指针constans。然后它转到xxx [0]转换为指向函数的指针。
下一步做什么代码,它接受该指针的地址fnptr.xxx[0],将其视为指向函数的指针并用()调用它。但是在该地址下没有任何功能,只是指向该功能的指针,因此发生了崩溃。