13-函数的调用
1、函数的调用
C语言中,函数调用的一般形式为:
函数名(实际参数表);
对无参函数调用时则无实际参数表。
实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。
各实参之间用逗号分隔。
(1) 函数表达式
函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。
int z=0;
z = max(23, 80)+1;
(2) 函数语句
函数调用的一般形式加上分号即构成函数语句。
printf("%d",a);
scanf("%d",&b);
(3) 函数实参
函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,
因此要求该函数必须是有返回值的。
printf("%d\n",max(20, 30));
2、函数的声明
调用某函数之前应对该被调函数进行说明(声明), 在主调函数中对被调函数作说明的目的是使编译系统知道被调函数返回值的类型,以便在主调函数中按此种类型对返回值作相应的处理。其一般形式为:
返回值类型 被调函数名( 类型 形参, 类型 形参... );
或为: 函数头拷贝一下,加上分号
如:
int max( int a, int b ); int max( int, int );
注意
(1) 如果被调函数的返回值是整型或字符型时,可以不对被调函数作说明,而直接调用。这时系统将自动对被调函数返回值按整型处理。
(2) 当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作说明而直接调用。
1 int max(int x,float y) 2 { 3 max(12,23); 4 }
(3) 普通的函数声明
1 char str(int a); float f(float b); 2 main() 3 { 4 /* ...... */ 5 } 6 7 char str(int a) 8 { 9 /* ...... */ 10 } 11 float f(float b) 12 { 13 /* ...... */ 14 }
3、函数的嵌套调用
C语言中不允许作嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。但是C语言允许在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。这与其它语言的子程序嵌套的情形是类似的。其关系可表示如图
思考&实现1:
从键盘输入三个整形数字,找出其最大值
1 int max(intx,inty) 2 { 3 return x>y?x:y; 4 }
调用
1 int mx = max(max(34,56),100); 2 max(12,23)