函数是C语言的一个重要组成部分,接下来介绍一下函数
函数可以看作一个个模块,直接的实现某个功能的部件。就像一个清洁系统一样,扫地,擦桌子,洗碗。一个功能是一个模块,也是一个实现功能的函数。
在C语言中将常用的功能进行了封装,封装成立一个个函数来提供给大家使用。
函数的种类
函数分为库函数和自定义函数。
库函数
库函数:由C语言直接封装好,无需用户操作,只需要调用的函数。但封装只是将很常用的函数和那些使用平率很高的函数进行了封装。如scanf、printf这写很常用的函数而使用频率很高的功能进行了封装。
值得注意的是——C语言并不直接实现库函数而是提供了C语言的标准和库函数的约定并不去主动实现。如:scanf 我们经常需要输入就规定scanf是输入,规定了函数的功能,函数名和返回值。
库函数的实现并不是直接由C语言来实现的,而是由编译器来实现的。如linux的gcc编译器,windows的VS编译器来实现。他们的实现代码可能不同,但是大同小异,在结果上体现相同,如scanf都是输入的功能。
对于库函数的学习可以参考一下下面的网站或者MSDN这个网站
www.cplusplus.com
注!!!在使用库函数的时候必须使用include来包含对饮的头文件
自定义函数
有封装好功能的库函数那么就有自己实现的自定义函数,自定义函数由程序员的功能由程序员自定义来实现。
为什么会出现库函数呢?
功能由各种各样的,无数个,不可能封装所有的功能成为库函数,也不可能所有的封装都是最适合程序的,称心如意。所以有了自定义函数。
自定义函数和库函数一样,由函数名,返回值,函数参数,函数体。但不同的是这些都由我们自己来设计,这些都由我们自己来实现
这就是最简单的一个自定义函数,实现输入两个数相加。
函数如果函数名前没有类型那么默认按int类型来算 。其中函数参数中的形参,可以没有变量,但是必须有类型。
函数的调用以及实现
函数的参数
函数的参数分为形参和实参,这两个看起来一字之差其实有很大的差距
实参——真实传递的参数。实参可以是:常量、变量、表达式、函数本身。实参无论何总类型在调用的时候都有了明确的值,以便将值传递给形参。
形参——函数名后面的变量。形参只有在被调用的时候才会实例化(分配内存)。调用完成之后销毁。
函数的调用
函数的调用分两种情况,传值调用和传(地址)址调用
传值调用
相当于对传递的拷贝,复制。生成一份一模一样的。并不影响传递前的变量。
传值调用
传递的是该变量在内存中的地址。就像一个箱子里可以放不同的东西,但是无论东西怎么变,箱子不会发生百变。传址调用就相当于把本来的箱子给了过去,而不是重新复制了一个箱子。改变箱子里面的东西,直接对地址进行操作。
这个例子可以清晰的看到这两种调用方法的不同,所产生的结果也不同。传值和传址的本质区别是一个相当于拷贝一份在备份上操作,一个就在原来的内存中操作。
传值和传址各有不同的使用场景,有些场景适合传值,有些场景适合传值。各有不同的用途。