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

第八篇:函数

说明:函数的学习分为库函数和自定义函,但我们学习的重点是自定义函数,所以库函数本篇文章不作说明,感兴趣的朋友们可以自行搜索资料学习

一.自定义函数

1.函数的概念:完成某个特定任务的代码就叫函数。

2.函数的创建:ret_type fun_name( 形参)

{

函数体;

}

其中,ret_type是函数返回类型(返回的值是整型还是字符型还是浮点型),fun_name是函数的名称(名称尽量起的有意义,方便后续管理),形参就是函数的参数(用数学函数类比,函数y=kx+b,里面的y和x就是函数的参数)参数可以没有(没有参数那括号内就写void,表示没有参数。如果有参数,必须交代参数的类型,名字和个数),函数体就是这个函数要完成的计算过程。

对函数的理解:可以把函数想象成一个工厂。想让工厂运作起来就需要原材料,这个原材料就是形参(也叫形式参数)。把原材料送给工厂后,工厂要进行加工,加工的过程就可以想象成函数完成计算的过程,此时工厂就是函数体。

举例:写一个加法函数(应用函数时,应先对函数进行定义,再调用函数)

最上面的int 就是函数的类型,add是函数的名称,x和y是形参(形参要有类型,名字和个数)。大括号括起来的就是函数体,就是函数要具体计算的部分,主程序里面的 c = add(a,b) 就是对函数的调用。

二.形参与实参

1.形参:在对函数进行定义时使用的参数就是形参,也叫形式参数,就比如上图中的 x ,y。若只定义函数而不调用函数,形参只是形式上存在,不会向内存申请空间,也不会真实存在,所以叫它形参。

2.实参:真实传递给函数的参数就叫实参,也叫实际参数(在调用函数时使用的参数),就比如上图中的 a 和 b 。

三.return语句

注意事项:(1)return后可以是数值或表达式,如果是表达式,则系统会先执行表达式,再返回表达式的值

(2)return后也可以什么都没有,直接写成return; ,这种写法适合返回类型是void的情况

(3)return执行后,函数就彻底返回,后面的代码就不再执行

(4)return返回值类型如果与函数返回值类型不一样,则return语句的返回值类型会被转换成函数的返回值类型

(5)若函数中有if语句,则需要保证每一种情况都有return返回

(6)如果函数的返回类型不写,则默认为int类型

(7)函数有返回值类型,而return没有,则函数返回值是未知的

四.数组作为函数

有时数据过多,且不易用循环处理时,可以将数组作为函数处理。例如:写一个函数,将整型数组中的所有函数全部设置为 -1 ,再写一个函数打印出来。

分析:本质上是对数组的操作数组元素的访问可以用下标实现(具体内容见小编上篇文章),找出对应元素后,将其设置为 -1 即可。因为是将所有数组元素设置为 -1 ,所以还要用到循环。最后再写一个函数,再用循环的方法打印出来即可。代码如下:

五.嵌套调用与链式访问

1.嵌套调用:函数之间的相互调用就叫嵌套调用。就像乐高积木一样,一块积木需要借助另一块积木堆积上去,最终组成一个完整的项目。例如:计算某年某月有多少天。

分析:年份分为闰年和不是闰年。如果是闰年,二月份有28天,否则有29天。然后还要将计算结果输出到屏幕上,所以要写两个函数,一个函数判断是否为闰年,一个函数将计算结果输出到屏幕上。代码如下:

2.链式访问

(1)概述:将一个函数的返回值作为另一个函数的参数

printf函数的返回值的读取的字符个数。在上图中,最右面的printf读取到4和3两个字符,所以中间的printf函数的参数就是2,中间的printf读取到2,一个字符,所以它的返回值就是1。最左面的printf的参数就是1。从右向左依次打印,结果为4321。

六.static和extern

在介绍这两个概念前,先来说一下作用域和生命周期。

1.作用域:限定代码名字可用性的代码范围就是这个名字的作用域。可以用局部变量类比理解

2.生命周期:变量从创建到销毁之间的一个时间段就叫生命周期;局部变量的生命周期是从进入作用域变量创建到出作用域,全局变量的生命周期是整个程序的生命周期

3.static:用于修饰全局变量,局部变量和函数

(1)修饰全局变量:会使得函数只能在本源文件中使用,在其他源文件中不能使用

(2)修饰局部变量:会改变和局部变量的生命周期,使得其生命周期和整个程序的生命周期一致,但局部变量的作用域不变

4.extern:用于声明外部符号,若全局符号在A文件中定义,想在B文件中使用,则可以在B文件中使用extern进行声明。

http://www.gsyq.cn/news/1389357.html

相关文章:

  • 本地语音AI助手:基于Whisper与Llama的隐私优先智能体构建指南
  • AI编程协作:从代码生成到架构决策的开发者角色进化
  • 如何用开源阅读鸿蒙版打造你的专属数字图书馆?3步实现个性化阅读体验
  • 浏览器视频下载神器VdhCoApp:本地配套应用完整配置指南
  • 银河麒麟x86架构一键安装oracle19c数据库
  • 评估保障级EAL4+认证为什么越来越受关注?
  • 终极WinPython指南:如何在Windows上轻松搭建便携Python环境
  • 2026年国内开发者订阅 ChatGPT Plus 的全路径实测:官方渠道与风控规避指南》
  • Agent权限系统审计执行方法
  • FakeLocation终极指南:三步掌握Android应用级虚拟定位黑科技
  • 从零封装:基于el-tree与穿梭框的树形穿梭组件实践
  • Python办公自动化实战|全网独家复现,PDF转高清图片全流程篇 引入一键批量转换+自动建目录+高清渲染+异常捕获,助力办公归档、文档展示、批量处理效率翻倍
  • 力扣算法面试150题——滑动窗口——个人复习用
  • [环境配置][实战指南]PyTorch、TensorFlow与CUDA、Python版本兼容性速查与避坑指南
  • Lovable后端集成实战手册:从零搭建高可用、低延迟、可观测的生产级集成链路
  • PikiwiDB新存储引擎 官文解读
  • 三步实现智能转录:bili2text重新定义视频内容处理流程
  • 浙里科技双明珠:杭州有阿里,宁波有天理
  • 统信UOS也能本地跑AI语音合成!MOSS-TTS-Nano部署实测全流程
  • 告别网盘限速:LinkSwift直链下载助手的完整使用指南
  • 大语言模型(LLM)本地部署完全指南
  • 2026最新五家龙港市黄金回收白银回收铂金回收彩金回收店铺靠谱回收门店推荐TOP5排行榜及联系方式推荐 - 前途无量YY
  • 3分钟掌握DeTikZify:从草图到专业科学图表的AI魔法
  • Nintendo Switch文件管理的瑞士军刀:NSC_BUILDER如何让游戏文件处理变得简单高效
  • 【信息科学与工程学】【数据科学】数据科学领域-第三篇 数学基础01 概率论及统计学概率论与统计数学 02核心知识表格03
  • Armv8-A/v9-A架构中SCTLRMASK_EL2寄存器详解与应用
  • 从LSI到PMC:主流阵列卡管理工具实战指南与运维场景解析
  • RS485总线上的‘幽灵数据’从哪来?手把手教你配置上下拉电阻和终端电阻(附SP3485实测波形)
  • Claude Code与Cursor深度对比:AI编程助手如何重塑开发效率与工作流
  • 思必驰重启IPO:年营收6.9亿,拟募资15.6亿 估值64亿 阿里加持