C++ 为什么函数总是引用一个特定参数?
在以下代码中:C++ 为什么函数总是引用一个特定参数?,c++,parameters,C++,Parameters,在以下代码中: int sum(int a=40, int b=20) { int result; result = a + b; return (result); } int main () { int a = 100; int b = 200; int result; result = sum(a, b); cout << "Total value is :" << result <<
int sum(int a=40, int b=20)
{
int result;
result = a + b;
return (result);
}
int main ()
{
int a = 100;
int b = 200;
int result;
result = sum(a, b);
cout << "Total value is :" << result << endl;
result = sum(a);
cout << "Total value is :" << result << endl;
return 0;
}
为什么:
sum(a)
将第二块中的(整数a)添加到第一块中的(整数b)中
我不明白为什么在(求和(a))中使用第一个块中的(b)值,而忽略第一个块中的(a)值。在您使用的函数
sum
中。这就是你打电话的原因
result = sum(a); // where a = 100 and the second parameter is ommited
在函数sum
中,第一个参数是取调用方a(=100)
的值,由于第二个参数不在调用方端,默认的b(=20)
将用作b
。因此,结果是
100 + 20
= 120
正如大卫·罗德里格斯(David Rodríguez)在第一条评论中所建议的那样,使用不同的变量名称(比如sum(int x,int y)
)以避免歧义和更好的理解
int sum(int a=40, int b=20) {
...
}
如果未指定,则将参数
a
声明为40
,将b
声明为20
。这是一个编译器服务,因此sum(a)
变成sum(a,20)
(b
未指定)。与此类似,sum()
变为sum(40,20)
<在您的方法中,sum
中的code>a和b
是。为了使其更短:
int sum(int a=40, int b=20)
{
return a + b;
}
int main ()
{
int a = 100;
int b = 200;
cout << "Total value is :" << sum(a, b) << endl;
cout << "Total value is :" << sum(a) << endl;
return 0;
}
intsum(inta=40,intb=20)
{
返回a+b;
}
int main()
{
INTA=100;
int b=200;
CUT你应该在C++中读一些关于缺省参数的内容。在这里,我建议你研究一下重载,因为它们有点关系。
在对sum()函数进行的第一次调用中,您为调用提供了两个参数,因此使用了您声明的变量a和b,因此得到100+200=300。在第二次调用tho时,您只提供了一个参数,因此第二次调用使用了默认参数值,即a=100,b获得默认值(20),那么当你编写一个函数,比如
returntype函数名(数据类型某些值),则称为默认参数
例如:如果你写一个函数,比如,
整数计算面积(整数长度=20,整数宽度=25)
然后,当您从main调用此函数时,您可以像这样将值传递给length和width
int main() {
int a=50;
int b=60;
calculate_area(a,b);
}
或者你可以这样称呼它
int main() {
calculate_area();
}
看到区别,我们没有传递任何参数,但它仍然是对函数的有效调用,因为在这种情况下……将考虑您提到的长度和宽度的默认值,在这种情况下是20和25
关于代码中的变量“a”和“b”,看起来您对变量的名称感到困惑。Main()和Sum()是两个不同的函数。
sum的“a”与main的“a”无关。当你阅读变量如何存储在堆栈和all中时,你就会明白这一点。Uhm…你应该得到一个入门教程,以及关于默认参数是什么以及它们如何工作的一些信息。我无法理解你关心的是什么,函数和“代码>主代码< /代码>中的名称是相同的吗?您可以将函数参数重命名为<代码> x< /代码>和<代码> y>代码>,看看它是否避免混淆?“为什么函数总是引用一个特定的参数?”“这是什么意思?”“参数的默认值”部分。@打开CSV在main()
中使用的变量名与sum()中的参数名完全无关。
看起来这是您混淆的原因。sum(a)表示sum(a,20),因为第二个参数在您不提供一个值时具有默认值。您可以在编辑器中对代码使用标记,选择区域并按Ctrl-K(或单击{}按钮)。
int main() {
calculate_area();
}