当我在结构中使用函数指针数组时,程序崩溃。
#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},
};
我的问题在哪里?
答案 0 :(得分:0)
我的投注在这里:
ST_FUNCPTR fnptr =
{
fnptr1
};
您要做的是初始化结构,哪个元素是带数组的数组。 fnptr1是一个指向函数的指针数组
有了你的编辑肯定。你不能用另一个数组初始化数组,就像你不能说int a1 [10] = int b [10]
为了澄清:fnptr1这里是指向函数指针的指针constans。然后它转到xxx [0]转换为指向函数的指针。
下一步做什么代码,它接受该指针的地址fnptr.xxx[0]
,将其视为指向函数的指针并用()调用它。但是在该地址下没有任何功能,只是指向该功能的指针,因此发生了崩溃。