摆烂后-重拾C语言之函数

一.引言

C语言中的函数是指完成某一特定任务的一小段代码。使用函数的好处很多,在后续若要重复完成某一任务时,我们就可以调用函数来实现,减少了不必要的代码,也提升了代码的可读性。

二.库函数

库函数就是我们在写代码时常用的函数,如:print,scanf等。这些函数是编译器厂商为我们提供的,方便了我们写代码。并且库函数的使用都需要包含对应的头文件,这里给大家一个链接可以查询库函数,库函数的使用方法

三.自定义函数

3.1语法形式

返回类型 函数名(形式参数)
{

}

我们可以将函数想象成一个工厂
原料 => 函数参数
产品 => 函数运行结果

举例:写一个加法函数来完成两数的相加

四.函数参数

4.1形式参数

形式参数需要交代变量名(可与实参的名字不同),变量类型,个数。
如上图中add(int x,int y),x和y就是形参

4.2实际参数

在调用函数时实际传递给函数的,如上图中add(a,b),a和b就是实参

  • 实参可以是:常量,变量,表达式,函数等

4.3形参与实参间的关系

两者的存储空间不同在这里插入图片描述
调用函数时才会分配空间给形参,并且函数调用完后形参会自动销毁形参的值改变不会影响实参的值,但当数组做函数参数时,形参改变实参也会跟着改变,后面我会讲到

五.return语句

1.return语句之后可以跟一个值,也可以跟一个表达式。
2.return语句执行后,其后代码不再运行。
3.若函数中存在if等分支的语句,则必须保证每种情况都必须有返回值,否则会出现编译错误。
4.若return后面返回的值和函数的返回类型不同,则编译时会将值转换为函数的返回类型。
5.若定义函数返回类型是void时,不需要写return

1.在这里插入图片描述
2.在这里插入图片描述

六.数组做函数参数

举例:写一个函数将一个整型数组的内容全部置为-1,并打印出来
在这里插入图片描述

实参:需交代数组名,数组元素个数
形参:需交代数组类型,数组名,数组元素个数
注:1.形参里面的int arr[]我省略了大小,一维数组可以省略[]里面的数字
     2.二维数组可以省略行,但不能省略列
     3.形参操作的数组和实参是同一个数组
     4.二维数组做实参时则不是传递个数,而是需将传给函数

七.函数调用

1.函数名();
2.函数名(参数);

7.1嵌套调用

即在一个函数里调用另一个函数
函数能嵌套调用,但不能嵌套定义

void x()
{

}
void y()
{
	x();
}

举例:求某年某月有多少天
在这里插入图片描述

图中数组arr[]里面有一个0,为什么?

在这里插入图片描述通过上图可以看出,在最前面加一个数字0可以直接通过月份决定数组的下标,更好理解。你也可以不用加0,修改如下在这里插入图片描述

八.链式访问

即把函数的返回值当做函数的参数

在这里插入图片描述

printf的返回值:返回成功读取到的字符个数
上图中首先执行第二个printf,打印出123,其返回值是3,然后传递给第一个printf,打印出3,结合起来打印出1233

九.函数的声明

在调用任何函数之前都要声明

  • 函数的定义也是一种特殊的声明,但需要将函数的定义放在调用函数之前

如何声明?

返回类型 函数名(参数)

1. int add(int x,int y);
2. void print();
内容概要:本文介绍了一个基于多传感器融合的定位系统设计方案,采用GPS、里程计和电子罗盘作为定位传感器,利用扩展卡尔曼滤波(EKF)算法对多源传感器数据进行融合处理,最终输出目标的滤波后位置信息,并提供了完整的Matlab代码实现。该方法有效提升了定位精度与稳定性,尤其适用于存在单一传感器误差或信号丢失的复杂环境,如自动驾驶、移动采用GPS、里程计和电子罗盘作为定位传感器,EKF作为多传感器的融合算法,最终输出目标的滤波位置(Matlab代码实现)机器人导航等领域。文中详细阐述了各传感器的数据建模方式、状态转移与观测方程构建,以及EKF算法的具体实现步骤,具有较强的工程实践价值。; 适合人群:具备一定Matlab编程基础,熟悉传感器原理和滤波算法的高校研究生、科研人员及从事自动驾驶、机器人导航等相关领域的工程技术人员。; 使用场景及目标:①学习和掌握多传感器融合的基本理论与实现方法;②应用于移动机器人、无人车、无人机等系统的高精度定位与导航开发;③作为EKF算法在实际工程中应用的教学案例或项目参考; 阅读建议:建议读者结合Matlab代码逐行理解算法实现过程,重点关注状态预测与观测更新模块的设计逻辑,可尝试引入真实传感器数据或仿真噪声环境以验证算法鲁棒性,并进一步拓展至UKF、PF等更高级滤波算法的研究与对比。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值