C语言学习打卡2021.11.27(指针进阶5)

c语言编程 C语言入门 c语言(C语言程序设计教程 c语言视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言_哔哩哔哩_bilibili学习C语言学习C语言程序设计教程 c语言视频教程 谭浩强 c语言学习 谭浩强 谭浩强c语言零基础入门教程 c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言学习C语言程序设计教程 c语言视频教程 c语言零基础入门教程 c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言学习 C语言 c语言 C语言程序设计https://www.bilibili.com/video/BV1q54y1q79w?我的github

https://github.com/remekeicon-default.png?t=LA92https://github.com/remeke上一章的答案:

char* my_strcpy(char*dest,const char*src);
//1、写一个函数指针 pf,能够指向my_strcpy
char*(*pa)(char*,const char*)=my_strcpy;
//2、写一个函数指针数组,能够存放4个my_strcpy函数的地址 
char*(*pfArr[4])(char*,const char*);

函数指针数组的用途:转移表

         简单运用:

#include<stdio.h>
void menu()
{
	printf("****************************\n");
	printf("****1.add     2.sub*********\n");
	printf("****3.mul     4.div*********\n");
	printf("*********  0.exit  *********\n");
	printf("****************************\n");			
}
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;
}
int main()
{
	int input;
	int x=0,y=0;
	int (*pfArr[5])(int ,int)={0,Add,Sub,Mul,Div};
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d",&input);
		
		if(input>=1&&input<=4)
		{
		printf("请输入两个操作数:>");
		scanf("%d%d",&x,&y);
		int ret =pfArr[input](x,y);
		printf("%d\n",ret);	
		}
		else if(input==0)
		{
			printf("退出"); 
		}
		else
		{
			printf("选择错误");
		}
	}while(input);
return 0;
}

指向函数指针数组的指针

指向函数指针数组的指针是一个指针,指向一个数组,数组的元素都是函数指针

定义:

void test(const(char*str))
{
	printf("%s\n",str);
}
int main()
{
	//函数指针pfun
	void(*pfun)(const char*)=test;
	//函数指针的数组pfunArr 
 } 

回调函数

回调函数就是一个通过函数指针调用的函数。如果你吧函数的指针(地址)作为参数传递给另一个函数,当这个指针用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方式直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值