函数指针可以更灵活的调用函数
格式: 函数返回值类型 (*指针名)(参数) = 函数名;
函数指针数组:将形参完全相同且返回值相等的函数指针 存放在一个数组中
格式:int (*arr[4])(int,int)={add,subtract,multiply,divide};
函数返回值类型 (*函数指针名)(参数) = {函数名1,函数名2};
函数调用和普通函数调用一致,函数指针数组需要加上数组指针索引
下面是函数指针示例:
#include<stdio.h>
#include<string.h>
#include<math.h>
// 函数声明
void method1();
int method2(int a,int b);
main(){
/*
函数指针:
格式: 函数返回值类型 (*指针名)() = 函数名;
*/
//创建函数指针
void (*p1)()=method1;
int (*p2)(int,int)=method2;
//调用函数
p1();
int res=p2(10,23);
printf("%d",res);
return 0;
}
void method1(){
printf("method1\n");
}
int method2(int a,int b){
int res=a+b;
return res;
}
代码块2:函数指针数组示例
#include<stdio.h>
#include<string.h>
#include<math.h>
//函数声明
int add(int a,int b);
int subtract(int a,int b);
int multiply(int a,int b);
int divide(int a,int b);
int main(){
/*
定义 加、减、乘、除 四个函数
用户键盘输入3个数字
前两个数字用来参与计算
第三个数字用来表示调用的函数
1:加法
2:减法
3:乘法
4:除法
*/
int num1,num2;
printf("请输入两个数参与计算:\n");
scanf("%d%d",&num1,&num2);
/*
单个函数指针:
int (*arr)(int,int)=add;
*/
// 多个函数可以定义一个数组来装四个函数的指针 也称为 函数指针数组
int (*arr[4])(int,int)={add,subtract,multiply,divide};
printf("请输入1~4任意一个数字,1加,2减,3乘,4除\n");
int choose;
scanf("%d",&choose);
//根据用户输入数字调用函数
int res=arr[choose-1](num1,num2);
printf("%d",res);
return 0;
}
int add(int a,int b){
return a+b;
}
int subtract(int a,int b){
return a-b;
}
int multiply(int a,int b){
return a*b;
}
int divide(int a,int b){
return a+b;
}