当前位置: 首页 > ds >正文

C49-函数指针

一 函数指针的基本语法

  1. 函数指针是指向函数的指针变量,存储函数的入口地址。通过它可间接调用函数

  2. 函数指针的定义:

    返回值类型 (*指针名)(参数列表);

二 示例

  1. 无返回值函数示例
  • 代码示例:
#include <stdio.h>//封装函数
void PrintWelcome()
{puts("程序已启动,欢迎使用!");
}int main()
{   //定义一个函数指针变量void (*p)();p=PrintWelcome;//指向函数//调用函数(*p)();return 0;
}
  • 成果展示:

image-20250525125840169

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;
}
  • 成果展示:

image-20250525130026268

三 函数指针编程实战

  • 题目:image-20250525130421045

  • 代码示例:

#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;
}
  • 成果展示:

image-20250525135905923

  • 报错与总结:

"case 1:"的"case"与"1"之间要有空格

http://www.xdnf.cn/news/8901.html

相关文章:

  • Lambda 表达式遍历集合的原理
  • 工作流长任务处置方案
  • nginx对webdav支持不好的解决办法
  • 人工智能100问☞第32问:什么是迁移学习?
  • Springboot怎么解决循环依赖
  • 如何使用pyinstaller打包python脚本?
  • Jetpack Compose 中更新应用语言
  • c++树状数组模板Fenwick (Binary Indexed) Trees
  • 基于TypeScript的全栈待办事项应用Demo
  • Day 19
  • 力扣HOT100之回溯:78. 子集
  • 【linux】systemct创建服务
  • 【C++】21. 红黑树的实现
  • 面试专栏04-SpringCloud
  • 相机内参 opencv
  • 基于Web组件实现随机抽奖
  • 云手机安卓12哪个好?掌派云手机安卓12系统上线,开启流畅体验新纪元
  • 指针数组和数组指针的区别
  • 华为OD机试真题—— 判断字符串子序列(2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 【EcelVBA】系统学习 ActiveX 控件
  • 恒坤新材闯上市:利润受益于大额补贴,产能利用率低仍要募资扩产
  • OD 算法题 B卷【最长公共后缀】
  • C++修炼:哈希表的模拟实现
  • 【python实战】-- 选择解压汇总mode进行数据汇总20250525更新(篇幅2)
  • 塔能科技:以多元技术赋能全行业能耗节能转型
  • 力扣刷题(第三十七天)
  • Linux之概述和安装vm虚拟机
  • Oracle附加日志概述
  • Day 31 训练
  • 哪款云手机支持安卓12系统?掌派云手机-性价比之选