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