- 函数指针,用于保存函数的入口地址,即函数名。
// 函数指针的基本用法
// 声明一个函数
int func(int);
// 写法1
// 定义一个函数指针
int (*fptr)(int); // 形式上只比函数多了一个*号和一对圆括号
// 写法2
// 声明一个函数指针类型
typedef int (*fptr_t)(int);
// 定义一个函数指针
fptr_t fptr;
// 函数指针赋值
fptr = func;
// 利用函数指针来调用函数
fptr(1); // 写法1
(*fptr)(2); // 写法2
- 函数指针也是一种变量,会有变量的数组,即函数指针数组。
// 函数指针数组
int (*fptr[10])(int); // 形式上类比其他变量的数组,比函数指针多了中括号和数组元素个数
运用:
#include<stdio.h>
int Add(int x,int y)
{
return x+y;
}
int Sub(int x,int y)
{
return x-y;
}
int Mul(int x,int y)
{
return x*y;
}
int Div(int x,int y)
{
return x/y;
}
void menu()
{
printf("**** 0.exit 1.add ****\\n");
printf("**** 2.sub 3.mul ****\\n");
printf("**** 4.div ****\\n");
}
int main()
{
int input=0;
int a=0;
int b=0;
int (*pfArr[5])(int x,int y)={0,Add,Sub,Mul,Div};
do
{
menu();
printf("请输入->\\n");
scanf("%d",&input);
if(input==0)
{
printf("exit\\n");
}
else if(input>=1&&input<=4)
{
printf("输入两个数字\\n");
scanf("%d %d",&a,&b);
int ret=pfArr[input](a,b);
printf("%d\\n",ret);
}
else
{
printf("重新输入\\n");
}
}
while(input);
return 0;
}