我们知道函数调用其实就是把实参的值传递给形参,形参在函数内部发挥作用,函数并实现我们想实现的功能。
函数调用分为两种
传值调用和传址调用,我们这里只需明白传值调用就行,学到指针后会讲传址调用。
我们调用函数必须满足三个条件
1.调用的函数必须是已经定义过的函数,如库函数,自定义函数。
2.库函数使用时需要写对应的头文件。
3.如果我们定义的函数在主调函数后面,需要在主调函数中声明被调函数。(因为电脑读代码是从上往下读的,我们被调用的函数在下面,电脑先读主调函数,当然不认识被调用函数了)
函数声明的格式,我个人喜欢抄 被调函数的第一行。也就是函数的首部
如:
#include <stdio.h> int main () { int MAX(int x,int y); int x = 1; int y = 2; int c = MAX(x,y); printf("%d\n",c); return 0; } int MAX(int x,int y) { return x>y?x:y; }
这时候我们被调函数就在主调函数后面,需要去在主调函数的内部声明。当然如果我们可以保证每次被调用函数在主调函数上面,就不需要写函数声明。
函数的嵌套调用
函数的嵌套调用就是被调函数里面调用函数。
而函数定义不可以嵌套,我们是不允许在一个函数内定义函数的,每一个函数都是平行独立的。
既 函数可以嵌套调用,但不可以嵌套定义。
如:
#include <stdio.h> int MAX2(int x,int y) { return x>y?x:y; } int MAX4(int n1,int n2,int n3,int n4) { int x = MAX2(n1,n2); int y = MAX2(x,n3); int z = MAX2(y,n4); return z; } int main () { int num1 = 1; int num2 = 2; int num3 = 3; int num4 = 4; int a = MAX4(num1,num2,num3,num4); printf("%d\n",a); return 0; }
我们来比较四个数的最大数,在MAX4中嵌套了两次MAX2,这就是嵌套使用。
函数的链式访问
函数的链式访问就是把一个函数的返回值作为另外一个函数的参数。
如:
#include <stdio.h> int MAX(int x,int y) { return x>y?x:y; } int main () { int x = 1; int y = 2; int z = 3; int a = MAX(z,MAX(x,y)); printf("%d\n",a); return 0; }
我们把x跟y的较大值直接作为下一次比较的参数了,这就是函数的链式访问。