|
使用函数名后跟实参列表就可以实现函数调用。例如:
main
{
int ;
y=mul(10,5)
printf("%d\n",y);
}
当编译器遇到函数调用时,控制权转移到函数mul()。然后逐行运行该函数,遇到return语句时返回一个值。该值赋给y。
main()
{
int y;
y=mul(10,5);
......
}
int mul(int x,int y)
{
int p;
p=x*y;
return(p);
}
函数调用给被调用函数发送两个整数10和5.
int mul(int x,int y)
这两个整数分别赋给x和y。该函数计算x和y的乘积,将结果赋给局部变量p,然后返回值25给main函数,再把该值赋给y。
调用函数的方法有很多种。下面方法都能调用函数mul:
(1)mul(10,5)
(2)mul(m,5)
(3)mul(10,n)
(4)mul(m,n)
(5)mul(m+5,10)
(6)mul(10,mul(m,n))
(7)mul(expression1,expression2)
注意,第6种调用方法以自身的调用作为一个参数。当使用表达式作为函数的实参时,必须将它们计算成一个数值,从而作为实参传递。
返回一个值的函数可以像其他变量一样使用在表达式中。下面语句是合法的:
printf("%d\n",mul(p,q));
y=mul(p,q)/(p+Q);
if(mul(m,n)>total)printf("Large");
但是,函数不能用在赋值语句的左边。例如,下面语句是非法的:
mul(a,b)=15;
没有返回值的函数不能用在表达式中,但可以被调用来完成某些任务。这种函数可以以它们的函数名作为一个单独的语句来调用。
例如:
main()
{
printline();
}
请注意被调用函数末尾有分号。
函数调用
函数调用时一个后缀表达式。运算符(…)的优先级非常高。因此,当函数调用作为表达式的一部分时,除非使用括号来改变优先顺序,否则首先计算函数。
在函数调用中,函数名为操作数,而括号集(…)为运算符,它包含着实参。实参必须与函数的形参在数据类型、顺序和数量上相匹配。多个实参必须用逗号分隔开。
注意:
(1) 如果实参比形参多,那么多余的实参将被丢弃掉。
(2) 相反,如果实参比形参少,那么那些没有实参与之匹配的形参将被初始化为垃圾数据。
(3) 数据类型的任何不匹配都将导致产生垃圾数据。
凌阳教育,全国唯一一家原厂式嵌入式培训机构,专业从事嵌入式人才培训13年,最近新开课程信息安全工程师培训,想了解更多嵌入式资料下载或者是凌阳教育的动态,请访问凌阳教育官网www.sunplusedu.com。