在对C语言有过一定的了解之后,我们都会涉及到一个概念:函数。
那么,什么是函数呢?
首先,我们来看一段 代码:
#include<stdio.h>
int Max(int x,int y)
{
retutn (x>y)?(x):(y);
}
int main()
{
int a = 9;
int b = 11;
int ret = Max(a,b);
printf("最大值是%d\n",ret);
return 0;
}
在上面的程序中,我们将参数a,b传入到函数Max之中,最后求出结果并返回,那么,这样写的好处是什么呢?我们为什么要使用函数来实现这样的功能呢?
首先,函数可以提高我们代码的复用性,如果我们频繁使用某一个功能,而这个功能被我们提前用函数的形式编写好,那么我们只需要完成对他的调用就可以了,而不是去重复的进行书写。
在C语言中,本身的基础库为我们提供了很多库函数,比如strlen,strcpy,rand……
能够熟悉使用这些子程序(子程序就是函数),对我们的业务提升有很大的帮助,但是一定要记得,使用库函数的时候要引正确的头文件。
接下来说说函数的实参和形参,在刚开始接触C语言的时候,我经常被这些个概念搞昏,当然,我比较弱,希望以后的你,变的更强。
实际参数(实参):实参就是就是上面代码中Max(a,b)中的a,b,它既可以是变量、常量,也可以是表达式,甚至可以是函数,但无论它是何种形式,在最后传给上面的形参时,它都是一个确定的值,以便把这些函数传给形参。
形式参数(形参):形参是实参是一份临时拷贝。上面函数体部分的x,y就是形参,在程序没有执行到函数体这一部分时,形参是不会被创建的。而当函数运行结束后,形参也随之销毁,因此形参只在函数中有效。
稍微了解一下形参和实参,我们来说说函数调用。函数调用可以分为传值调用和传址调用。
传值调用:形参和实参分别处于不同的内存块,对形参的修改不会对实参造成影响。
传址调用:形参和实参依然位于不同的内存块,但两者之间存在了一层关系,形参之中存着实参的地址,这样通过形参可以轻易的找到实参在内存中存的内存单元,这样函数可以通过对形参的间接访问修改实参。