《c语言:自定义函数》

函数的定义与声明

1.函数的定义

函数应该包括的结构有函数头函数体

160c4505ee874c5ea5f2eda73933c0ca.png

 1.函数头

函数头包括返回值类型,函数名参数列表。

注意:给函数命名应该按照函数的命名规则,使得函数名能够简易描述该函数的大致功能。比如想定义一个加法类型的函数,就可以命名为:int add(int x, int y)

其中add是加法的意思。

2.函数体

函数体是实现函数功能的主要部位,由大括号包含。

当我们在定义函数时,可能会遇到下面几种情况:

1°函数没有参数

2°空函数(注意空函数的返回值类型是void

空函数可以巧妙的运用在编程过程中。假如某个函数还未编写完成,此时就可以使用空函数占位置,等到后面内容成熟后再返回继续编写。

注意不能再一个函数体内定义其他函数。如下图的定义形式就是错误的:

9a1322ac6c1a4afe8bb8078b54a2baeb.png

2.函数的声明

在我们编写代码的过程中,若想要定义或使用一个函数,必须对函数进行声明

函数定义是为了让编译系统知道函数的功能,而函数声明是为了让系统知道有这么一个函数

3.函数的参数

1.形式参数与实际参数

(1)形式参数

声明或定义函数时,函数后方括号里的参数称为形式参数,简称形参。被称为形参的原因是在实际参数输入前形式参数并没有实际意义,只是一串代码,用来规定参数格式。

(2)实际参数

在函数体内调用已定义好的函数时,已定义好的函数/的函数名/后方/括号里的参数/称为实际参数,简称实参。

8a17c0256a284740981f99822a7a3bc7.png

注意形式参数与实际参数的形式不一定是相同的,如下文图片中形式参数是x,y,而实际参数是a,b。形参与实参不使用同一个形式能使函数的灵活性更好,但是也会有问题出现,见下文分解。

(4)形参与实参的联系

当函数调用的时候,实参传递给形参,这时形参是实参的一份临时拷贝,形参在自定义函数的函数体内执行完任务后又变为一串的代码。且对形参的修改不影响实参。

4.函数参数会遇到的问题与相对解决措施(指针)

1。问题

当我们编写代码时可能会遇到如下情况:

题目:编写一个函数,功能是接收两个整型变量,输出交换两个整型变量后的内容。

我们如果按正常的编写流程来操作,就会遇见以下问题:

69715c5d11a6436da10e7e5017bc4f2c.png

输入的是2   5,为什么返回还是2   5?

代码什么错误都没有,为什么变量值没有交换呢?

原因如下:

我们在定义形参的时候使用了x,y形式,而定义实参使用的是a,b形式,这样我们在定义时就已经使这两种参数的地址(adress)不同,导致了自定义函数体在执行交换任务时只交换了x,y的地址所控制的内容,而没有交换a和b地址所控制的内容,从而函数返回并输出时发现并没有实现交换。

2.解决措施

256b537454564c118006001b0cd3ec3b.png

如图中函数所示,我们将其中的当*指向px时,*px就是px的别名。此时我们交换a,b就可以通过他们俩的地址远程操控a与b的值的交换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值