C语言入门基础学习函数?来看我就告诉你!

函数

在前面我们已经讲过了一些简单的函数,如程序的主函数main()、标准输出函数printf()。在C语言中,大多数功能都是依靠函数来实现的。But,你知道什么是函数吗?我猜你肯定不知道。

那么今天我们来仔细的讲解一下什么是函数,函数的定义、内部函数与外部函数等相关知识。

1 . 函数的定义

假设有一个射击游戏程序,程序在运行过程中,要不断地发射子弹打死怪物。Biu!Biu!Biu!假设发射子弹的代码有100行,如果说我每射击一次就要写这100行代码一次,那么可能现在的程序员哥哥都已经累死在电脑桌前了。即便没累死,这样写出来的程序也会从几十KB变成几百M,同时维护这些程序代码的程序员哥哥看到游戏连续射击时代码量的时候,也会果断的拔出菜刀砍死你。

那该怎么办呢?为了解决【重复编写代码】这个问题,我们可以把发射子弹这部分的代码给单独拿出来放在一个{}中,并为这段代码起个名字。这样,每次我们需要发射子弹的时候,通过这个名字来调用发射子弹的代码块就可以了,而不是发射一次就编写一次射击动作。是不是感到很惊奇?

小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:870963251!适合在校大学生,小白,想转行,想通过这个找工作的加入。裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程

而这上面我们所提取并组合起来的代码块可以被看作是程序中自己定义的一个函数,玩游戏时,在需要发射子弹的地方调用这个函数就可以了。

在C语言中,定义一个函数的具体语法格式如下:

返回值类型函数名([[参数类型参数名1],[参数类型参数名2],……,[参数类型 参数n]])

{

执行语句

………

return 返回值;

}

l 返回值类型:用于限定函数返回值的数据类型;

l 函数名:表示函数的名称,该名称可以根据标识符命名规范来定义;

l 参数类型:用于限定调用方法时传入参数的数据类型;

l 参数名:用于接收调用方法时传入的数据;

l return关键字:用于结束函数,并返回函数指定类型的值;

l 返回值:被return语句返回的值,该值会返回给调用者。如果函数没有返回值,则返回值类型要声明为void,此时,函数体中的return语句可以省略不写。

在上面的语法格式中,函数中的“[[参数类型参数名1],[参数类型参数名2],…,[参数类型 参数n]]”被称作参数列表,它主要是用来描述函数在被调用时需要接收的参数。如果你的函数不需要接收任何参数,那么设置参数列表为空就好了,这样的函数被称为无参函数。相反地,参数列表不为空的函数就是有参函数。接下来分别讲解这两种函数。

1、无参函数

在C语言中,无参函数的定义很简单,先来看一个定义无参函数的示例代码,具体如下:

void func()

{

printf("这是我的第一个函数! ");

}

在这个示例代码中,func()函数就是一个无参函数,在定义时参数列表为空。要想执行这个函数,需要在main()函数中调用它。

案例1:

1 #include

1 void func(int x, int y)

2 {

3 int sum = x + y;

4 printf("x+y=%d ", sum);

5 }

6 void main()

7 {

8 func(3, 5);

9 }

运行结果:

在这个程序中,第2~6行代码定义了一个函数func(),这个函数包含两个参数,分别是x和y。当在main()函数中调用func()函数时,由于传入的参数是3和5,因此,程序打印的结果为“x+y=8”。下面通过一张图来描述func()函数的调用过程。

从图中可以看出,有参函数和无参函数的调用过程类似,只不过在调用有参函数时,需要传入实参,并将传入的实参赋值给形参,然后在函数体中执行x+y操作,最终将结果输出到控制台。

值得一提的是,在定义有参函数时指定的参数x和y是形式参数,简称形参,它们只在形式上存在,并不是真正存在的参数。调用函数时传入的参数(如案例中的3和5)是实际参数,简称实参,与形参相对,实参则是指实际存在的参数。

2 . 函数的返回值

了解了函数之后我们会发现,其实函数的返回值是指函数被调用之后,返回给调用者的值。

函数返回值的具体语法格式如下:

return 表达式;

对于返回值为空的函数,可以直接在return语句后面加分号,具体语法格式如下:

return;

为了让大家更好的理解如何使用return语句,接下来对案例1进行改写,使func(int x, int y)函数能够返回求和计算的结果。

案例2:

1 #include

10 int func(int x, int y)

11 {

12 int sum = x + y;

13 return sum;

14 }

15 void main()

16 {

17 int sum = func(3, 5);

18 printf("x+y=%d ", sum);

19 }

运行结果:

从图中可以看出,案例1与案例2实现了同样的功能。接下来通过一个图例来演示func()函数的整个调用过程以及return语句的返回过程,如下图所示。

从图中可以看出,在程序运行期间,参数x和y相当于在内存中定义的两个变量。当调用func(int x,int y)函数时,传入的参数3和5分别赋值给变量x和y,并将x+y的结果通过return语句返回,整个方法的调用过程结束,变量x和y被释放。

需要注意的是,return后面表达式的类型和函数定义返回值的类型应保持一致。如果不一致,就有可能会报错。如果函数没有返回值,返回值类型要声明为void。为了保证程序的可读性和逻辑性,没有返回值的函数都应定义为void。

猜你喜欢

转载自blog.csdn.net/chengxuyuan997/article/details/82591669