C语言(长期更新)第6讲:函数

C语言(长期更新)

第6讲:函数

++跟着潼心走,轻松拿捏C语言,困惑通通走,一去不回头~欢迎开始今天的学++ ++习内容,你的支持就是博主最大的动力++ 。


知识回顾

++上节课++ ++我们针对对数组的知识内容做了一些练习 ,今天我们来学习新课函数的内容,坐稳了,我们发车,gogogo!++


6.1概念

定义:在数学中我们就接触过函数,比如一次函数y=kx+b;

C语言中,函数(function) 又称为子程序 ,为完成某一特定任务的一小段代码。

一个大的计算任务可以分解为多个小任务,由不同函数分别完成。

可以重复使用,提高开发软件的效率。

类别:在我们前面学习的内容中我们已经接触到了一些简单的代码,

比如在猜数字游戏中使用过的menu() game(),这就属于自定义函数;

像printf() scanf(),这就属于库函数。

下面我们分别学习这两类C语言中最常见的函数。

6.2库函数

------标准库中提供的函数

6.2.1 标准库和头文件

概念:

C语言标准规定了C语言各种语法规则 (if for语句 函数 数组怎么写),却不提供库函数。

C语言的国际标准ANSI C 规定了一些常用函数的标准,称为标准库。

编译器厂商据ANSI提供的标准库给出一系列函数实现,成为库函数。

好处:常用函数能够直接使用,快捷高效,且保证了代码的质量

这些库函数会根据功能的划分,在不同的头文件中进行声明,

在使用时必须包含对应的头文件。

库函数相关头文件:https://zh.cppreference.com/w/c/header

(网址中zh指中文,改为en为英文网站)

6.2.2 库函数使用方法

C/C++官方的链接:https://zh.cppreference.com/w/c/header

cplusplus.com:https://legacy.cplusplus.com/reference/clibrary/

库函数文档的一般格式:

  1. 函数原型
  2. 函数功能
  3. 参数parameters和返回类型说明
  4. 代码举例
  5. 代码输出
  6. 相关知识链接

6.3 自定义函数

------自己设计和实现的函数

6.3.1 语法形式

  • ret_type 为返回类型
  • fun_name 为函数名
  • ()内放置形参
  • {}内为函数体

6.3.2 实践

在上述例子中,我们看到了函数,形参和实参的具体使用方法。那么形参和实参之间到底是什么关系呢?下面我们就来探讨一下这个问题。

6.3.3 形参与实参

  • 变量的创建是要在内存中开辟空间的
  • 形参和实参是不同的内存空间
  • 实参传递给形参时(传参)形参会创建自己的内存空间,来保存实参

这也就是说,对形参的修改,不会影响实参。

形参可以理解为实参的一份临时拷贝。

6.4 return语句

在函数的设计中,函数中经常会出现return语句,这⾥讲⼀下return语句使用的注意事项。

  1. return后边可以是⼀个数值,也可以是⼀个表达式,如果是表达式则先执行表达式,再返回表达式的结果。
  2. return后边也可以什么都没有,直接写 return; 这种写法适合函数返回类型是void的情况。
  3. return返回的值和函数返回类型不⼀致,系统会自动将返回的值隐式转换为函数的返回类型。
  4. return语句执行后,函数就彻底返回,后边的代码不再执行。
  5. 如果函数中存在if等分支的语句,则要保证每种情况下都有return返回,否则会出现编译错误。

解释:

1.比如add函数,返回值为x+y,是一个表达式,就返回表达式的计算结果;

而我们最常使用的main函数返回值为0,就是一个数;

函数中返回值可以不唯一,有灵活的运用

2.void 的意思就是空;返回类型为void就是啥值都不返回

而 return; 这样的用法一般用于如下情况:

在一个函数需要提前返回,但不需要带回任何值,则写return;

因为最终返回值是根据函数类型决定的,

所以在函数定义时函数返回类型很重要,一定要写

但是强制类型转换,可能会造成数据截断或溢出;

5.当函数返回值规定不完整,就会出现返回任意值的情况

比如我们讲上面的代码稍作修改

6.5 数组作为函数参数

前面我们使用的参数都是变量,那么数组是否也可以作为参数使用呢?当然可以。

欲知后事如何,且听下回分解,我们下节课见~


++好了今天的学习内容就到这里啦,谢谢你的陪伴,我是潼心,下次再见~如果这篇文章对你有帮助的话。请务必给主播一个一键三连,球球了,这对主播很重要~++

相关推荐
天外飞雨道沧桑8 分钟前
我在浏览器里练了一个 792 参数的大模型,它学会了补全 JavaScript
开发语言·javascript·ai·ecmascript·ai编程
hhhjhl13 分钟前
Yup 跨端三方库仓颉适配全流程
java·开发语言
运维行者_24 分钟前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php
“AI国潮设计-小江”1 小时前
【AIGC实战】Python+SDXL打造“潮汕英歌舞IP”万能立牌插件,批量生成“发财元宝蛋糕”视觉营销方案(附源码)
开发语言·人工智能·python·prompt·aigc
lhbweilai2 小时前
分析FreeRTOS内核对象API的源码实现(八)
c语言·开发语言·stm32·单片机
努力努力再努力wz2 小时前
【C++高阶系列】C++20 协程底层原理:函数为什么能暂停?从状态机到 Task,彻底串起挂起、恢复与协程调度
开发语言·c++·c++20·1024程序员节
咩咩啃树皮2 小时前
JavaScript 中 this 指向为什么总在变?
开发语言·前端·javascript
程序员清风2 小时前
算法题中的边界条件、测试与调试
开发语言·算法·kotlin
砚底藏山河2 小时前
python量化实操:冷热分层存储
java·开发语言·python·金融
十五年专注C++开发2 小时前
pybind11:一个跨C++和Python平台的编程库
开发语言·c++·python·pybind11