#include <stdio.h>
#include <stdlib.h>
struct process
{
char b[10];
int i;
int (*fun)(int a ,int b,int c);
};
int fun_1(int a,int b,int c)
{
printf("%d\n",a);
return 1;
}
int fun_2(int a,int b,int c)
{
printf("%d\n",b);
return 1;
}
int fun_3(int a,int b,int c)
{
printf("%d\n",c);
return 1;
}
void main(void)
{
struct process procinit[3];
procinit[0].fun=fun_1;
procinit[1].fun=fun_2;
procinit[2].fun=fun_3;
procinit[0].fun(2,3,4);
procinit[1].fun(2,3,4);
procinit[2].fun(2,3,4);
return ;
}
运行输出
2
3
4
#include <stdio.h>
#include <stdlib.h>
struct process
{
char b[10];
int i;
int (*fun)(int a ,int b,int c);
};
int fun_1(int a,int b,int c)
{
printf("%d\n",a);
return 1;
}
int fun_2(int a,int b,int c)
{
printf("%d\n",b);
return 1;
}
int fun_3(int a,int b,int c)
{
printf("%d\n",c);
return 1;
}
void main(void)
{
int i,j,k;
struct process * procinit[3];
procinit[0]=(struct process *)malloc(sizeof(struct process));
procinit[1]=(struct process *)malloc(sizeof(struct process));
procinit[2]=(struct process *)malloc(sizeof(struct process));
procinit[0]->fun=fun_1;
procinit[1]->fun=fun_2;
procinit[2]->fun=fun_3;
procinit[0]->fun(2,3,4);
procinit[1]->fun(2,3,4);
procinit[2]->fun(2,3,4);
return ;
}
运行输出
2
3
4
总结,对于struct process procinit[3];实际上已经分配了3个结构体数组的空间了,所以可以直接使用了,
struct process * procinit[3];实际上只是分配了一个二级指针,指向了这个数组,但是没有分配指向三个结构的的一级指针,必须分配才能使用