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

关于函数调用其实是函数指针+传参+解引用的一些思考

直接访问和间接访问的理解。

直接访问:既然函数是数据处理器,也就是对全局变量进行读写操作,这种读写操作是直接的,所以我叫做直接访问。

间接访问:函数要想有意义就要有三要素:函数声明、函数调用、函数定义。其中最重要的就是函数调用和函数定义。函数调用也就是给函数指针传参后解引用的过程。这里充分理解函数名、函数指针、函数地址的深层含义。要么说指针才是C语言的灵魂。函数调用的过程其实是一个“跳转”的过程。函数名就是要跳转的代码段地址。传参的其实就对应变量中的值,也就是数据。这些数据会被复制copy到函数的形参中去存储,函数内部其实就是根据参数中的值进行判断、加工的过程。

如何理解函数返回值?

首先返回值是一个数据,这数据要么存储在函数内部某个栈变量上,没有作为常数直接返回,关于返回其实也是一个往回“跳转”的过程,与函数调用的跳转组成了一个循环。这个数据可以作为函数内部代码运行过程记录,也可以作为对参数进行加工后的结果,总之是一个确定的值。这个值被跳转返回给函数调用的发起者也就是上一层函数。有时候根据这个值进行逻辑判断,有时候传递给上一层函数的某个栈变量。

如何理解没有参数的函数调用和函数定义?

从指针角度出发,这种函数调用的过程是:函数指针+解引用。也就是没有经过参数传参。这种函数在单片机编程中经常用作跳转直接访问全局变量,也有些无参函数主要完成某些动作,但是从宏观上看也是对全局变量进行直接访问(包含寄存器)。

总之,对全局变量的读写操作可以看做是直接访问。对函数调用+传参+函数定义的过程可以看做是间接访问。因为函数如果只去看函数定义而忽略函数调用(包含传参)只是看到事物的某一方面,是不全的。

最后,再说一遍:指针才是C语言的灵魂,这句至理名言。

额外延伸:

思考一个问题,用c语言写的函数(这里指的是函数定义)和数学的函数之间有哪些共性?

我的答案是2种函数在宏观上看来都是抽象的、概括的、包含所有情况而非特定情况的。

有了C语言写的函数,通过函数调用传参,这样非特定情况就确定下来了。相对的数学的函数如果给了x特定的值,那么y值的结果也是特定的。这也是两者都称之为“函数”的原因。

http://www.dtcms.com/a/524522.html

相关文章:

  • 奇缦科技珠海网站建设优化网站地图样本
  • 【设计模式】组合模式(Composite)
  • 【论文精读】Matten:融合 Mamba 与 Attention 的视频生成新范式
  • HTB Networked writeup(network-scripts提权)
  • 如何入门python机器学习?金融从业人员如何快速学习Python、机器学习?机器学习、数据科学如何进阶成为大神?
  • 网站开发技术交流中国国家培训网
  • 网站无法做301重定向网站查询域名入口
  • 国产数据库MongoDB兼容性技术分析与实践对比
  • 350做网站深圳零基础网站建设入门到精通视频教程
  • 冒泡排序代码实现详解
  • 金仓多模数据库平替MongoDB的电子证照国产化实践——从2TB数据迁移到1600+并发支撑
  • 【优先级队列(堆)】3.前 K 个⾼频单词 (medium)
  • 苏州建站公司 诚找苏州聚尚网络设计图案用什么软件
  • 数据结构——快速排序
  • IntelliJ IDEA新版下载、安装、创建项目及Maven配置的教程(附安装包等)
  • C++特性详解:extern、缺省参数、函数模板与名字空间
  • VUE+Electron从0开始搭建开发环境
  • MongoDB 平替新方案:金仓多模数据库驱动电子证照国产化落地
  • 项目(一)
  • SaaS多租户架构实践:字段隔离方案(共享数据库+共享Schema)
  • 企业网站网页设计的步骤房地产网站建设需求说明书
  • 中国专门做生鲜的网站著名品牌展厅设计
  • 开发避坑指南(66):IDEA 2025 Gradle构建安全协议警告:Maven仓库HTTPS切换或允许HTTP的配置方法
  • 前端新手入门-HBuilder工具安装
  • AceContainer::Initialize()函数的分析
  • 石家庄网站建设方案咨询涉县住房与城乡建设厅网站
  • 鸿蒙Next媒体开发全攻略(ArkTS):播放、录制、查询与转码
  • vs2015网站开发基础样式福田庆三下巴
  • Hugging Face介绍
  • 要建立网站和账号违法违规行为数据库和什么黑名单企业所得税优惠税率