纯刚学,有个疑问在百度差不明白。
用默认参数
fun(int a,int b=1)
普通的
fun(int a)
{int b=1;}
这两个有什么不同?如果没有,那默认参数的用途是什么。既然存在,那肯定有他的道理。
fun(int a,int b=1)
普通的
fun(int a)
{int b=1;}
后者,调用者丧失了给b另一个值的可能性了,前者可以写fun(a, 123);让b等于别的值。
默认参数和函数重载没啥关系,那么说肯定错的。
既然叫默认参数,就是你不赋值的时候它会有个默认值
比如你调用fun(0),只传一个值,那么此时a=0,b=1
如果你调用fun(0,2),那么a=0,b=2
你按后面的写法就没法给b传值了呀,它固定只能等于1了
默认参数和重载没有一毛钱关系
void f (int * p)//这里上面说过了,变量名是i,但是类型是int *,可以保存其他变量的地址。
{
*p=100;//上面也说过,*p就是i,i就是*p
}
int main()
{
int i=9;//这是一个普通的定义和赋值
f(&i);//这里要是调用函数,用&i,把i的地址传递给函数的参数p
cout<<"i"<<i;//结果应该是100
return 0;
}
默认参数在编程中的作用是可以在函数定义中指定一个或多个参数的默认值,从而在调用函数时可以省略这些参数,系统会使用默认值代替。 与普通参数不同的是,没有传入实参时,使用的是缺省默认值。如果传入实参,则使用传入的实参。
默认参数的使用可以让函数调用更加简洁,同时也可以增强代码的可复用性和可维护性。默认参数的作用在于在函数定义中定义一些默认的值,使得在调用函数时可以不必每次都传入同样的实参值。
以下是对段落0中的代码的解释和补充说明: 函数f的形参为指向int类型变量的指针,即p。在函数内部,将p赋值为100。在main函数中,定义int类型变量i,并将其赋值为9。然后调用f函数,并将i的地址作为参数传递给p。最后输出i的值,结果应为100。 函数调用时使用&符号表示将实际参数i的地址传递给形参*p,因为函数f中的参数类型是指针类型,需要传递的是i的地址,而不是i的值。