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

指针和函数相联系

目录

函数指针

创建

使用

声明简化(typedef)

​编辑

函数指针数组

转移表


函数指针

创建

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int add(int x,int y) { return x + y; } int main() { //创建函数指针 int (*p)(int, int) = &add; //或者int (*p)(int x, int y) = &add; return 0; }

使用

通过函数指针p调用这个函数

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> //写一个打印二维数组的函数 int add(int x,int y) { return x + y; } int main() { //创建函数指针 int (*p)(int, int) = add; //int (*p)(int, int) = &add;后面 add可以加 &或不加 int ret = (*p)(2, 3); //int ret = p(2, 3);可以不写 * printf("%d\n", ret); return 0; }

声明简化(typedef)

像这种复杂的函数声明,可以用typdef重新命名,方便使用

比如

但如果是数组指针类型函数指针类型就不一样

因为这里的p是数组指针变量,想重新命名这个数组指针类型,就要改这个p变量

函数指针变量也是改这个地方


函数指针数组

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> //函数指针数组 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 main() { int(*pf[3])(int, int) = { add,sub,mul }; for (int i = 0; i < 3; i++) { printf("%d\n", pf[i](3,2)); } return 0; }

只有当函数类型一样的时候才能用这个函数指针数组

类型不同不能用

理解:

函数指针是 int(*pf)(int, int)

因为要函数指针数组,所以让函数指针变量和数组相结合,就是(* pf[3] )


转移表

函数指针数组用于转移表

实现一个计算器,用于整数的加、减、乘、除

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> //函数指针数组 void menu() { printf("1.add 2.sub 3.mul 4.div\n"); printf("0.exit\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 = 0; int x = 0; int y = 0; int ret = 0; int(*pf[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); ret = pf[input](x, y); printf("%d\n", ret); } else if (input == 0) { printf("exit"); } else { printf("选择错误,请重新选择:\n"); } } while (input); return 0; }
http://www.jsqmd.com/news/1209042/

相关文章:

  • 2026怎么总结短视频内容?这5个高效方法帮你快速梳理核心内容
  • N32G45XVL-STB开发板在植物生长仪中的应用与优化
  • Cursor批量重构终极方案(工程师私藏的7行配置代码)
  • 食养品哪家好:衡身堂平台推荐 - 云溪自乐
  • 需求变更率下降62%的关键:Claude PRD中必须嵌入的3层语义校验机制
  • Windows系统架构与文件目录结构解析
  • 个人记录【Java后端面试】Java基础
  • AI应用开发者的底层知识框架与实战路径
  • 让学生吃上“放心饭”,爽提走好校园外卖“安全”路
  • 21被试4分类可视化结果
  • 2026年Q3科华UPS电源及蓄电池产业格局与企业选型策略分析 - 企业推荐官【官方】
  • 2026年实力之选:内蒙古企明星财务有限公司与济南佐佑财税管理咨询有限公司 - 甄选服务推荐
  • 2026年技术内容创作思考:从录播课单品模式到体系化服务的转型之路
  • 香港村屋一站式服务哪家强?2026年元朗中介全链条能力深度对比 - GrowUME
  • 把 UI 注解从 CDS 数据模型中拆出去,深入理解 ABAP Metadata Extensions
  • 江诗丹顿中国官方售后服务中心|官方地址与维修热线权威信息声明(2026年7月更新) - 江诗丹顿服务中心
  • Java加解密性能优化实战:从算法选型到硬件加速的六项关键技术
  • 2026年知识付费小程序搭建找哪家?小程序搭建平台推荐红榜
  • 微信数据解密实战:从内存取证到数据库逆向的完整技术栈
  • 计算机毕设新颖的选题怎么选
  • 从“机械应答“到“服务伙伴“:得物高可控智能客服的 Agent 工程实践|AICon 演讲整理
  • 跨文件全局替换总出错?,Cursor智能上下文感知替换原理与避坑清单
  • WSL2安装配置与开发环境搭建指南
  • 养生食品哪家性价比高:衡身堂理性消费 - 晚香时候
  • 最新发布!武汉光谷科技职业技术学校2026年招生简章 - 武汉中职最新信息发布
  • 2026 年新消息:承德专业的花岗岩石牌坊企业怎么联系,揭秘:这石牌坊如何成为顶级豪宅的身份象征? - 领域鉴赏官
  • 学术文本去 AI 痕迹完整方案:靠谱检测 + 专业改写工具汇总(PaperRed / 笔捷 AI / 毕业之家深度测评)
  • 抖音质量效能部不传之秘:用AI精准预估“可能出事”的模块
  • 2026年7月最新贵阳江诗丹顿官方售后客户服务电话及线下网点地址 - 江诗丹顿官方服务中心
  • Java跨格式文档密码检测实战:基于Apache POI与PDFBox实现