一 函数指针的基本语法
-
函数指针是指向函数的指针变量,存储函数的入口地址。通过它可间接调用函数
-
函数指针的定义:
返回值类型 (*指针名)(参数列表);
二 示例
- 无返回值函数示例
- Example:
c
#include <stdio.h>
//封装函数
void PrintWelcome()
{
puts("程序已启动,欢迎使用!");
}
int main()
{ //定义一个函数指针变量
void (*p)();
p=PrintWelcome;//指向函数
//调用函数
(*p)();
return 0;
}
- Show:

2.有返回值函数示例
- Example:
c
#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;
}
- Show:

三 函数指针编程实战
-
题目:
-
Example:
c
#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;
}
- Show:
