C语言中的函数-引入函数的概念-学习笔记-14

为什么要用函数

说起函数,我们最熟悉的就是main 函数因为我们写 C 语句的时候,必须包含 main 函数。我们的输入、输出甚至数据的处理都从一个 main 函数中进行,但是随着程序的规模越来越大,单纯使用 main 函数已经无法满足后期维护和编写的需求。并且我们在程序运行中,需要重复使用某个功能时,要一遍又一遍的写,非常麻烦,所以我们就引入函数这个概念。把一个庞大程序的功能封装到一个一个函数中,然后把各种功能的函数组装在一起,实现我们程序所需要的功能。

函数

函数是从英文 function 中翻译过来的,function 在英文中也有功能的意思,所以我们的函数也就是功能,函数就是用来完成一个又一个的功能的。

从一个例子引入

现在,我们要输出这样的一条信息

1
2
3
**********************
Function
**********************

上面是22个星号,中间是8个字符,下面是22个星号
如果我们不实用自定义函数,可以这样写

1
2
3
4
5
6
7
#include <stdio.h>
int main(){
printf("**********************\n");
printf(" Function \n");
printf("**********************\n");
return 0;
}

如果,此时我们需要把22个星星改成20个星星呢?需要一个一个的从里面修改,如果我们已经写了200行这样的星星呢?改起来是不是很麻烦?
所以,我们可以使用函数来解决这个问题,函数就是功能,我们将功能整合在一起,就是程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int main(){
//声明了两个函数,msg 和 star
void msg();
void star();
//调用了 star 和 msg 函数
star();
msg();
star();
}
//定义了 msg 和 star 函数
void star(){
printf("**********************\n");
}
void msg(){
printf(" Function \n");
}

分析

声明函数

写完 main 函数之后,我们首先声明了两个自定义函数,因为在使用自定义函数前,要先声明再使用,生命函数之后,编译器就知道了,关于这个函数的类型、名称、参数类型、参数个数等等,让后面的代码知道,这是我们自定义的内容。

使用函数

我们声明完函数后,又使用了该函数,使用函数很简单,直接函数名+括号就可以使用了,如果函数包含参数,在括号内填写参数即可,这个我们后面再说。

自定义函数钱

在 main 的花括号结束后,我们又声明了两个函数,其中一个函数输出星号,一个函数输出文字。

总结例子

我们回到最初的问题,因为我们使用了自定义函数,函数能够直接返回星号,所以无论我们需要多少星号,直接输入函数名调用即可,如果需要批量修改,我们也可以直接改函数中的内容即可,不用害怕出错。

关于函数

  1. 一个 C 程序由一个或者多个程序模块组成,每个程序模块都做为一个源程序文件,程序较大时,我们一般不把内容都放在一个源程序文件中,而是分为若干个源程序文件,这样便于进行编写和编译,提高调试效率。
  2. 一个源程序文件由一个或多个函数及其他有关内容组成,一个源程序文件是一个编译单位,在程序编译是,是以源程序文件为单位进行编译的。
  3. C 程序,是从 main 函数开始的,在 main 函数中调用其他函数,在调用结束后,又会返回到 main 函数中,在 main 函数中来结束整个程序的运行。
  4. 所有函数都是平级的,即可以一个一个定义,但是不能嵌套定义,函数可以嵌套调用
  5. 函数分为两大类,一个是库函数,即由系统提供的,用户不用自己定义,拿来使用就可以,比如我们经常用的输入输出函数,printf、scanf等,都是系统函数库提供的。另一个是自定义函数,即用户自己定义的,用来解决用户专门需要的功能的函数。
  6. 从函数的形式上来看,也分两大类,一个是无参函数,即没有参数的函数,比如我们上面例子中输出星号和文字的函数,在 main 函数调用时,不向被调用函数传递数据。另一种是有参函数,有参函数在调用时,需要调用方向被调用的函数传递数据,然后被调用的函数会获取一个函数值,处理完之后,再返回给主调函数

尾巴

这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。


-------------The End-------------
欢迎请我喝咖啡哦~!