C49-函数指针
一 函数指针的基本语法
-
函数指针是指向函数的指针变量,存储函数的入口地址。通过它可间接调用函数
-
函数指针的定义:
返回值类型 (*指针名)(参数列表);
二 示例
- 无返回值函数示例
- 代码示例:
#include <stdio.h>//封装函数
void PrintWelcome()
{puts("程序已启动,欢迎使用!");
}int main()
{ //定义一个函数指针变量void (*p)();p=PrintWelcome;//指向函数//调用函数(*p)();return 0;
}
- 成果展示:
2.有返回值函数示例
- 代码示例:
#include <stdio.h>//封装有返回值函数
int inCData(int data)
{return ++data;
}int main()
{ int result;//有返回值的函数指针定义、调用;int (*p1)(int data);p1=inCData;result=(*p1)(11);printf("test p1:%d",result);return 0;
}
- 成果展示:
三 函数指针编程实战
-
题目:
-
代码示例:
#include <stdio.h>
#include <stdlib.h>//封装求最大值函数
int GetMax(int data1,int data2)
{int result;result=data1>data2?data1:data2;return result;
}//封装求最小值函数
int GetMin(int data1,int data2)
{int result;result=data1<data2?data1:data2;return result;
}//封装求和函数
int GetSum(int data1,int data2)
{int result;result=data1+data2;return result;
}//封装数据处理函数
int DataHandler(int data1,int data2,int (*pfunc)(int data1,int data2))
{int result;result=(*pfunc)(data1,data2);return result;
}//主函数
int main()
{//定义变量int num1=10;int num2=20;int cmd;int result;//定义函数指针int(*pfunc)(int data1,int data2);//输入数据printf("请根据你的需求输入以下命令:1(取最大值);2(取最小值);3(求和).\n你的命令是:");scanf("%d",&cmd);//用户命令转为所需的处理函数的指针switch(cmd){case 1:pfunc=GetMax;break;case 2:pfunc=GetMin;break;case 3:pfunc=GetSum;break;default:printf("指令错误!请在下次测试中输入有效指令:1(取最大值);2(取最小值);3(求和)");exit(-1);}//调用数据处理函数result=DataHandler(num1,num2,pfunc);//输出数据:返回给用户结果printf("你需要的结果是:%d",result);return 0;
}
- 成果展示:
- 报错与总结:
"case 1:"的"case"与"1"之间要有空格