下面的例子很好的说明了结构体函数指针的用法。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
typedef struct{
int funCode;
void (*func)(int *data);
}FUNC;
static void get_para1(int *data)
{
printf("initialization1...\n");
}
static void get_para2(int *data)
{
printf("initialization2...\n");
}
static void get_para3(int *data)
{
printf("initialization3...\n");
}
static void get_para4(int *data)
{
printf("initialization4...\n");
}
static void get_para5(int *data)
{
printf("initialization5...\n");
}
static void get_para6(int *data)
{
printf("initialization6...\n");
}
static FUNC funcpara[]={
{0x01, get_para1},
{0x02, get_para2},
{0x03, get_para3},
{0x04, get_para4},
{0x05, get_para5},
{0x06, get_para6},
{0x07, NULL},
};
int main()
{
int nr;
//int *data = NULL;
int data[10]={0};
printf("请输入数字:\n");
scanf("%d",&data);
for(nr=0; nr<ARRAY_SIZE(funcpara); nr++){
if(funcpara[nr].funCode == data[0]){
if(funcpara[nr].func){
funcpara[nr].func(data);
}
}
}
return 0;
}
在VS2012中敲入上面代码,按住“ctrl” + F5,结果如下所示。