2.7.2 函数调用

2.7.2 函数调用

按输入参数的传递形式,函数调用有三种形式:按位置传参、按形参名字传参、按位置和形参名字混合传参。

函数IsVectorEqual判断两个向量是否相等,有三个输入形参,分别是向量v1、向量v2、判等精度eps,代码如下:

按位置传参时,实参与形参的声明顺序一一对应。例如下面的函数调用是按位置传参,实参{1.0,2.0,3.0}、{1.0,2.0,3.2}、1e-6分别对应形参v1、v2、eps。

按形参名字传参时,实参与指定名字的形参对应。例如下面的按形参名传参的函数调用:

实参{1.0,2.0,3.0}、{1.0,2.0,3.2}、1e-6分别对应形参v1、v2、eps。按形参名字传参时,不用考虑形参的位置。

按位置传参和按形参名字传参可以混合使用,但按形参名字传递的实参必须放在按位置传参的实参之后,例如:

并不是所有的形参都要有对应的实参,如果形参有默认值,就可以不传递实参而使用默认值。例如,下面的函数调用中,实参eps取默认值0。

上面的例子中,函数只有一个输出形参,但很多情况下,函数需要返回多个结果,这时就可以定义有多个输出形参的函数。例如,下面的函数VectorNorm有三个输出形参x、y、z。

多个输出形参的函数调用只能位于等式的右端或赋值符号的右端,并且严格按照下面的形式使用:

其中,out1、out2、out3等均是变量,不能是表达式或常量。结果变量与函数输出形参按位置一一对应。结果变量可以省略,相应的输出形参值被丢弃。

VectorNorm根据所期望获取的结果值可以使用不同的调用方式:

下面的使用方式是错误的: