3.8 参数与参数值

优质
小牛编辑
131浏览
2023-12-01

我们用过的一些内置函数携带参数,即你提供给函数让它工作的一些值。比如,如果你想计算一个数的正弦值,你需要指定这个数是多少。因此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++会自动转换参数值的类型。现在你应该了解这些普遍规则,后面我们再讨论例外情况。