企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
我们用过的一些内置函数携带**参数**,即你提供给函数让它工作的一些值。比如,如果你想计算一个数的正弦值,你需要指定这个数是多少。因此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++会自动转换参数值的类型。现在你应该了解这些普遍规则,后面我们再讨论例外情况。