codecamp

C++ 参数与参数值

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

C++ 多函数编程
C++ 参数和变量的局部性
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }