学习目标:
了解并使用函数指针以及函数指针数组
学习内容:
提示:函数指针以及函数指针数组
学习产出:
(1)函数指针:指向函数的指针
首先定义了两个简单函数
#include<stdio.h>
int Add(int x,int y){
return x+y;
}
int Sub(int x,int y){
return x-y;
}
int Sub(int x,int y){
return x-y;
}
int main(){
//首先取出函数地址
// Add 或者&Add
//定义一个指针
//*p=Add
//指针类型为函数
int (*p)(int ,int)=Add;
int (*p)(int ,int)=&Add;
return 0;
}
(2)函数指针数组:存放函数只针的数组
int main(){
//函数指针数组 必须制定数组的大小
int (*pfArr[5])(int,int)={Add,Sub};
return 0;
}
应用
#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("\t***********************\n\t");
printf("****1. add 2.sub******************\n\t");
printf("****3. mul 4.div*******************\n\t");
printf("*****0. exit************\n\t");
}
int main (){
//计算器
int input=0;
int x=0;
int y=0;
int ret=0;
int (*pfArr[5])(int,int)={0,Add,Sub,Mul,div};
printf("请选择>");
scanf("%d",&input);
if(input>=1&&input<=4){
//TODO
printf("请输入两个操作数>");
scanf("%d %d",&x,&y);
ret=pfArr[input](x,y);
printf("%d\n",ret);
}
else if(input==0){
//TODO
printf("退出程序");
}
else{
printf("选择错误");
}
return 0;
}