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

用函数指针求a和b中的大者

        指针变量也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。

先按一般方法编写程序:

        可以用一个指针变量指向max函数,然后通过该指针变量调用此函数。

        指向函数的指针变量的一般定义形式为
        函数类型(*变量名)(函数形参表);
        请将上面定义的指向函数的指针变量和上面程序中的函数max的原型作比较:

        int max(int,int);        //max 函数原型
可以看出,只是用(*p)取代了max,其他都一样。将上面程序的主函数修改如下:

        注意在定义指向函数的指针变量p时,(*p)两侧的括号不可省略,表示p先与*结合,它是指针变量,然后再与后面的()结合,表示此指针变量指向函数,这个函数值(即函数返回的值)是整型的。如果写成"int *p(int,int);",则由于()优先级高于*,它就成了声明一个函数了(这个函数的返回值是指向整型变量的指针)。

        请注意第7行的赋值语句"p=max;"。此语句千万不要漏写,它的作用是将函数max的入口地址赋给指针变量p。这时,p才指向函数max。注意:只须将函数名max赋给p,不能写成"p=max(a,b);"形式。函数名代表函数入口地址,而max(a,b)则是函数调用了。

        在main函数中的第9行:

        m=p(a,b);
赋值号的右侧是函数的调用,此赋值语句和"m=max(a,b);"等价,调用*p就是调用函数max。这就是用指针形式实现函数的调用。以上用两种方法实现函数的调用,运行结果是完全一样的。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 中国蚁剑 安装教程 2024年5月
  • flutter文件分类模板之modules
  • NLP中的Tokenizer分词器的概念与实现
  • 一些关于科技的想法
  • 代码随想录训练营Day 56|力扣300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
  • 概率论与数理统计,重要知识点——全部公式总结
  • Vue3_对接腾讯云COS_大文件分片上传和下载
  • Windows环境如何使用Flutter Version Manager (fvm)
  • S1E48:内存池 课后作业
  • DeepSORT(目标跟踪算法)中自由度决定卡方分布的形状
  • 34、matlab输入命令汇总
  • 中科数安 |-公司办公透明加密系统,数据防泄漏软件
  • 【Vue】核心概念 - module
  • MySQL之查询性能优化(七)
  • JavaWeb期末知识点复习
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2018一半小结一波
  • Create React App 使用
  • es6要点
  • IDEA常用插件整理
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • isset在php5.6-和php7.0+的一些差异
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Selenium实战教程系列(二)---元素定位
  • vue-router的history模式发布配置
  • 从零开始学习部署
  • 电商搜索引擎的架构设计和性能优化
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 给Prometheus造假数据的方法
  • 欢迎参加第二届中国游戏开发者大会
  • 前端面试之CSS3新特性
  • 通过npm或yarn自动生成vue组件
  • 温故知新之javascript面向对象
  • 阿里云API、SDK和CLI应用实践方案
  • 国内开源镜像站点
  • 数据库巡检项
  • 正则表达式-基础知识Review
  • ​Linux·i2c驱动架构​
  • ​ssh免密码登录设置及问题总结
  • ‌JavaScript 数据类型转换
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #07【面试问题整理】嵌入式软件工程师
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (1)Jupyter Notebook 下载及安装
  • (14)Hive调优——合并小文件
  • (2020)Java后端开发----(面试题和笔试题)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (Qt) 默认QtWidget应用包含什么?
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (五)关系数据库标准语言SQL
  • (一)RocketMQ初步认识