函数的定义与声明
1.函数的定义
函数应该包括的结构有函数头与函数体。
1.函数头
函数头包括返回值类型,函数名和参数列表。
注意:给函数命名应该按照函数的命名规则,使得函数名能够简易描述该函数的大致功能。比如想定义一个加法类型的函数,就可以命名为:int add(int x, int y)
其中add是加法的意思。
2.函数体
函数体是实现函数功能的主要部位,由大括号包含。
当我们在定义函数时,可能会遇到下面几种情况:
1°函数没有参数
2°空函数(注意:空函数的返回值类型是void)
空函数可以巧妙的运用在编程过程中。假如某个函数还未编写完成,此时就可以使用空函数占位置,等到后面内容成熟后再返回继续编写。
注意:不能再一个函数体内定义其他函数。如下图的定义形式就是错误的:
2.函数的声明
在我们编写代码的过程中,若想要定义或使用一个函数,必须对函数进行声明。
函数定义是为了让编译系统知道函数的功能,而函数声明是为了让系统知道有这么一个函数。
3.函数的参数
1.形式参数与实际参数
(1)形式参数
声明或定义函数时,函数后方括号里的参数称为形式参数,简称形参。被称为形参的原因是在实际参数输入前形式参数并没有实际意义,只是一串代码,用来规定参数格式。
(2)实际参数
在函数体内调用已定义好的函数时,已定义好的函数/的函数名/后方/括号里的参数/称为实际参数,简称实参。
注意:形式参数与实际参数的形式不一定是相同的,如下文图片中形式参数是x,y,而实际参数是a,b。形参与实参不使用同一个形式能使函数的灵活性更好,但是也会有问题出现,见下文分解。
(4)形参与实参的联系
当函数调用的时候,实参传递给形参,这时形参是实参的一份临时拷贝,形参在自定义函数的函数体内执行完任务后又变为一串的代码。且对形参的修改不影响实参。
4.函数参数会遇到的问题与相对解决措施(指针)
1。问题
当我们编写代码时可能会遇到如下情况:
题目:编写一个函数,功能是接收两个整型变量,输出交换两个整型变量后的内容。
我们如果按正常的编写流程来操作,就会遇见以下问题:
输入的是2 5,为什么返回还是2 5?
代码什么错误都没有,为什么变量值没有交换呢?
原因如下:
我们在定义形参的时候使用了x,y形式,而定义实参使用的是a,b形式,这样我们在定义时就已经使这两种参数的地址(adress)不同,导致了自定义函数体在执行交换任务时只交换了x,y的地址所控制的内容,而没有交换a和b地址所控制的内容,从而函数返回并输出时发现并没有实现交换。
2.解决措施
如图中函数所示,我们将其中的当*指向px时,*px就是px的别名。此时我们交换a,b就可以通过他们俩的地址远程操控a与b的值的交换。