#include <stdio.h>
typedef int (*func_t)();
typedef struct sop{
int num1;
int num2;
func_t op;
}opnum;
int add(int num1,int num2)
{
return(num1 + num2);
}
int sub(int num1,int num2)
{
return(num1 - num2);
}
int mult(int num1,int num2)
{
return(num1 * num2);
}
int div(int num1,int num2)
{
return(num1 / num2);
}
int main()
{
opnum a;
a.num1 = 20;
a.num2 = 10;
a.op = sub;
printf("%d - %d = %d\n",a.num1,a.num2,a.op(a.num1,a.num2));
a.op = add;
printf("%d + %d = %d\n",a.num1,a.num2,a.op(a.num1,a.num2));
a.op = mult;
printf("%d * %d = %d\n",a.num1,a.num2,a.op(a.num1,a.num2));
a.op = div;
printf("%d / %d = %d\n",a.num1,a.num2,a.op(a.num1,a.num2));
return 0;
typedef int (*func_t)();
typedef struct sop{
int num1;
int num2;
func_t op;
}opnum;
int add(int num1,int num2)
{
return(num1 + num2);
}
int sub(int num1,int num2)
{
return(num1 - num2);
}
int mult(int num1,int num2)
{
return(num1 * num2);
}
int div(int num1,int num2)
{
return(num1 / num2);
}
int main()
{
opnum a;
a.num1 = 20;
a.num2 = 10;
a.op = sub;
printf("%d - %d = %d\n",a.num1,a.num2,a.op(a.num1,a.num2));
a.op = add;
printf("%d + %d = %d\n",a.num1,a.num2,a.op(a.num1,a.num2));
a.op = mult;
printf("%d * %d = %d\n",a.num1,a.num2,a.op(a.num1,a.num2));
a.op = div;
printf("%d / %d = %d\n",a.num1,a.num2,a.op(a.num1,a.num2));
return 0;
}
结果:
20 - 10 = 10
20 + 10 = 30
20 * 10 = 200
20 / 10 = 2
在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。