17 函数一:库函数与自定义函数

函数

c6ef032069e5416493676b506eaabe57.jpg

库函数

进行封装的基础c语言代码,引入头文件后就能现成用了,不用再重复写代码,提高效率。

c1c848caa190471f80724c319570cbb6.jpg

自定义函数

函数的组成:

返回类型,函数名称,函数参数

5fb837dd0e6b4ecca5926b96ffbb6945.jpg

例题一

比较两个数字中的较大数

67b5845889a94860bab18f58fe2471ac.jpg

首先写主函数,int main

其次需要注意要定义出来get_max函数,因为需要get_max给我们返回一个较大数,所以需要          int m=get_max。

上面写的是我们自定义的函数get_max,这里用到了一个三目操作符。

注意:函数后面的括号里面不能加双引号

那么怎么判断函数需不需要return呢?

39e7e145c29c4c16ab79ee9f816cad90.jpg

需要看我们要让这个函数去干什么。

第一个函数我需要让他帮我算出来较大值,然后告诉我,那就得返回return,因为是整形所以用int去接收这个返回值。

第二个函数只需要打印出来hehe就算完成任务了,那么就不需要返回,不需要返回时用void。

例题二

给出两个数,将两个数的数值进行交换

9967ddb71be74004a2cd4fd093c39f52.jpg

这个代码逻辑上是没有问题的,但是运行之后发现并不能达到我们想要的结果,那这个时候就需要进行调试来发现其中的问题,所以一定要学会调试!

d1b2b2d697b74eb09704ed6384b5953c.jpg

通过调试我们可以发现,ab的地址和xy的地址是不一样的,所以问题就在于,xy只是接收了ab的数值,函数内部在xy发生数值交换时,并没有影响到ab。

eba3f2db5a994e57bf2692912e9040dd.jpg

这时候引入一个概念:形式参数和实际参数

当实参传递给形参的时候,形参只是实参的一份临时拷贝,对形参的修改不会影响到实参

 这时,我们需要用到指针,也就是地址。

fdf7acd26e8543dab63274596d0dd4be.jpg

修改a的值有两种,第一种直接修改a的值相当于把之前a的地址抹去再在一个新的地址去给a赋值(回来试验一下)   

已经验证了,这样说是不对的,直接改只是修改值并没有修改地址。

而第二种间接改相当于我找到a的地址,然后把新的值换到原来的地址中去。

那么我们就可以这样修改上面的代码

041b1c681e2a4d3fba158c99d593f1e3.jpg

每个变量分配的地址是唯一的,通过地址改数值就能确定到唯一的地址指向的那个变量的值。

3780536da9134ceaaa08066506073d71.jpg

把a,b的地址取出来,放到指针变量里面去,再把地址作为参数传递过去,最后通过地址的解引用,完成ab数值的交换。

px指向a的地址,加个*解引用变成*px就=a了

如果把*去掉,那么交换的是指针变量所指向的内存空间,也就是交换了两个地址,并没有影响到外部的a,b


什么时候需要传地址什么时候不需要呢?

当你想要改变实参的参数或者形参影响实参时请传输地址,形参不用影响实参时不需要传地址。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值