函数指针和函数指针数组

函数指针可以更灵活的调用函数

格式: 函数返回值类型 (*指针名)(参数) = 函数名;

函数指针数组:将形参完全相同且返回值相等的函数指针 存放在一个数组中

格式: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;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值