3.8 参数与参数值
最后更新于:2022-04-01 06:19:16
我们用过的一些内置函数携带**参数**,即你提供给函数让它工作的一些值。比如,如果你想计算一个数的正弦值,你需要指定这个数是多少。因此sin函数使用一个double值作为参数。
一些函数携带一个以上的参数,如pow携带两个double参数,分别作为底数和幂。
注意,在所有这些例子中,我们不仅要指定参数的个数,还要指定参数的类型。所以当你写一个类定义时,发现参数列表指定了每个参数的类型,这应该没什么奇怪的。例:
~~~
void printTwice (char phil) {
cout << phil << phil << endl;
}
~~~
此函数携带一个参数,名称为phil,类型为char。不管这个参数是什么(光看这些我们也不知道它是什么),它都要被打印两次,然后是一个空行。我选择给这个参数命名为phil,只是想说明你的参数名称由你决定,但是一般情况下你要选择一个比phil更直白的名字。
~~~
调用这个函数需要我们给一个char值。例如,我们可以定义main函数如下:
void main () {
printTwice (’a’);
}
~~~
你提供的这个char值被称作**参数值**,我们称参数值被**传递**给函数。这种情况’a’作为参数值传给了printTwice,它将被打印两次。
换一种方式,如果我们定义了一个char变量,就可以换用此变量做参数值:
~~~
void main () {
char argument = ’b’;
printTwice (argument);
}
~~~
注意这里一点非常重要:作为参数值传给函数的变量名(argument)跟函数的参数名(phil)没有任何关系。我再重申一遍:
**作为参数值传给函数的变量名跟函数的参数名没有任何关系。**
它们可以同名也可以不同名,但重要的是你必须认识到它们不是同一个东西,除非它们碰巧值相同(本例中它们都是字符’b’)。
传给函数的参数值必须和函数的参数具有相同的类型。这是条重要的规则,但有时会混淆,因为C++会自动转换参数值的类型。现在你应该了解这些普遍规则,后面我们再讨论例外情况。