在数学中,我们就见到过函数,比如:y=kx+b,其中k和b都是常数,给定x一个任意值,我们就能得出y的值,这就是数学中的一次函数。
其实在c语言中也引入了函数的概念,c语言函数就是完成某一行特定的任务的一小段代码。
在c语言中我们一般会见到两类函数,自定义函数和库函数。
库函数:
c语言标准中规定了c语言的各种语法准则,c语言并不提供库函数,c语言的国际标准ANSIC规定了一些函数的标准,被称为标准库,那不同的编译器厂商根据ANSIC提供的语言标准给出了一系列函数的实现,这些函数就是库函数,比如scanf和printf等等,这些函数包含头文件都是可以直接使用的。
自定义函数:
自定义函数就是自己定义自己实现的。
语法形式
ret_type fun_name(形式参数)
{
函数体;
}
ret_type是函数返回类型;但我们需要他的返回值时,我们可以把它的类型写出int,如果不需要返回可以写成void。
type_name是函数名;这个就像人的名字一样,有了名字方便调用,函数名也尽量要根据要实现的功能来起。
既然学到这里,那我们写个代码来实现一下
一个简单的加法函数
当然我们也可以传递一个数组过去
上面我们在语法形式中提到了了形式参数;
在上面的代码中,a和b都是实际参数,x和y则是形式参数;
为什么x和y是形式参数呢,实际上,我们如果只是定义了Add函数,而不去调用他,那么Add函数中的x和y只是形式上存在的,而不会向内存申请空间,不会真是存在,所以叫形式参数。
形式参数是在函数被调用的时候,用来存放实际参数传过来的值,才会向内存申请空间,这个过程就是形参的实例化。
形式参数和实际参数又有什么关系。
虽然实际参数是传递给形式参数的,但是他们的地址不一样。
这样我们可以理解为,形式参数是实际参数的一份临时拷贝。
下面还有一个小知识:
在上面这个代码中,我们在Tmp这个自定义函数中,把x和y的值交换了,但是我们打印出来的a和b的值还是我们输入的3和5,所以我们得出,修改形式参数并不会影响实际参数。