我看到了一些代码片段,其中我看到了无法理解的函数调用。它就是这样的
void recursion(int v,int p=0) //Definition
{
//whatever in the body
}
main()
{
//something ...
recursion(0);// *_*
}
我在学校里被告知,调用和定义应该有相同数量的参数。但在这里我无法理解。看起来参数的数量可能不同。
答案 0 :(得分:1)
这称为默认参数值。必须在没有默认参数值的其他参数之后指定它们。
然后,如果您未在函数调用中指定参数,则将使用该值。
如果您有多个默认参数,请说:
void f(int first, int second = 0, char* third = "");
如果要省略前一个默认值,则必须省略以下默认值:
//You can do
f(0);
f(1, 2);
//but not
f(1, "Three");
答案 1 :(得分:1)
此调用等于:
main()
{
//something ...
recursion(0,0);// *_*
}
因为第二个变量的默认值是0。