调用函数

我们定义函数的目的就是调用此函数。
下面来介绍一下调用函数:

函数调用的形式

调用函数的一般形式为:
函数名(实参表列)

如果调用的是无参函数,则“实参表列”可以没有,但括号不能省略。
如果实参表列包含多个实参,则各参数间用逗号隔开。

按函数调用在程序中出现的形式和位置来分,可以有以下3种函数调用方式。
1.函数调用语句
把函数调用单独作为一个语句,
如:
printf_star(),
这时不要求函数带回值,只要求函数完成一定的操作。
2.函数表达式
函数调用出现在另一个表达式中,
如:
c = max(a,b)
max(a,b)是一次函数调用,他是赋值表达式的一部分。
这是要求函数带回一个确定的值以参加表达式的运算。
3.函数参数
函数调用作为另一个函数调用时的实参。
如:
m = max(a,max(b,c))
其中,max(b,c)是一次函数调用,他的值是b和c二者中的大者,
把这个结果再次参与调用,会得出a,b,c中的最大值。

函数调用时的数据传递

1.形式参数和实际参数
在调用有参函数时,
主调函数和被调用函数之间有数据传递关系。
在定义函数时,函数名后面的括号中的变量名称为“形式参数“(简称”形参“)或”虚拟参数“。
在主调函数中调用一个函数时,函数名后面括号中的参数称为”实际参数“(简称”实参“)
实际参数可以是常量、变量或表达式。

注意区分主调函数和被调用函数。

2.实参和形参间的数据传递
在调用函数时,系统会把实参的值传递给被调用函数的形参。
或者说,形参从实参得到一个值。
该值在函数调用期间有效,可以参加该函数中的运算。

在调用函数过程中发生的是参与形参间的数据传递称为”虚实结合“。

我们通过一个程序来看:
输入两个整数,要求输出其中的大者。
这个之前见过。
在这里插入图片描述
在这里插入图片描述
在这两张图中,max函数的位置不一样,但结果是一样的,
在这个程序中,它的位置不影响程序运行。
但一般情况下,我们应把定义的函数放在主调函数的后面。

主函数中有一个函数调用,a和b就是实参,x和y是形参,
通过函数调用,a和b的值传递给形参x和y参与运算。
得到的z再赋值给变量c

我们需要注意:
实参可以是常量,变量或表达式,但是要求他们有确定的值。

实参和形参的类型需要相同或赋值兼容。
否则进行类型转换。
字符型和int型可以通用。

函数调用的过程

1.在定义函数中指定的形参,在未出现函数调用时,它们并不占用内存中的存储单元。
在发生函数调用时,函数max的形参才被分配到临时单元。
2.将实参的值传递给对应形参。
3.在执行max函数期间,由于形参已经有值,就可以利用形参进行相关的运算。
4.通过return语句将函数值带回到主调函数。
如果函数不需要返回值,则不需要return语句。这时函数的类型应定义为void类型。
5.调用结束,形参单元被释放。
实参单元仍保留并维持原值,没有改变。
如果在执行一个被调用函数时,形参的值发生改变,不会改变主调函数的实参的值。
这是因为实参和形参处于不同的存储单元。

实参向形参的数据传递是”值传递“,单向传递,只能由实参传给形参。

函数的返回值

1.函数的返回值是通过函数中的return语句获得的。
return语句将被调用函数中的一个确定值带回到主调函数中去。
如果需要从被调用函数待会一个函数值(供主调函数使用),
被调用函数必须包含return语句。

一个函数中可以有一个以上的return语句,执行到哪一个return语句哪一个return语句就起作用。
return语句后面的括号可以不要。
return后面的值可以是一个表达式。
如:
max(int x,int y)
{
return(x>y?x:y);
}

2.函数值的类型
我们需要在定义函数时指定函数的类型。

3.在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。
如果函数的类型和return语句中的表达式的值不一致,则以函数类型为准。
对数值型数据,可以自动进行类型转换。
即函数类型决定返回值的类型。
4.对于不带回值的函数,应当用定义函数为”void类型(空类型)“
这样,系统就保证不使函数带回任何值,即禁止在调用函数中使用被调用函数的返回值。
此时在函数中不得使用return语句。

本篇内容到此结束。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值