创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
c语言内容💖:
专栏:c语言之路重点知识整合
【c语言】全部知识点总结
目录
- 一、介绍
- 二、 显式提供参数值
- 三、从右向左依次指定!
- 四、声明处赋值!
- 1.重定义
- 2.函数不接受 0 个参数
- 总结
一、介绍
C++中的函数参数可以设置默认值,这意味着在调用函数时,如果没有提供该参数的值,则将使用默认值
例如:对一个函数fun1
赋予参数默认值,格式为:
void fun1(int a=1)
{//something...
}
对这个已有默认值的函数调用查看(输出函数名
和默认参数
):
#include <iostream>
using namespace std;void fun1(int a=1)
{cout <<__FUNCTION__<<" " << a << endl;
}int main()
{fun1();return 0;
}
二、 显式提供参数值
如果不想使用声明的默认值,只需要在调用时提供参数,就会根据你提供的参数执行,而不是默认值
三、从右向左依次指定!
函数参数指定默认值顺序:从右向左依次指定,中间不能有间断
void fun(int a, int b=2, int c=3)
{ //函数参数指定默认值顺序:从右向左依次指定,中间不能有间断cout << __FUNCTION__ << " " << a<<" "<<b<<" "<<c << endl;
}
如果不是从右向左指定,函数调用时就会出现二义性
void fun1_2(int a, int b = 2, int c ); //error
当调用该函数时编译器无法确定应该为a
和c
哪个参数传入缺失的值:
因此对函数设置参数默认值时,要按照从右到左的顺序!
四、声明处赋值!
当函数的声明和定义分开时,一般在声明处赋予函数参数默认值
void fun2(int a=2); //声明
int main()
{fun2(); //调用return 0;
}
void fun2(int a) //定义
{//something...
}
1.重定义
如果在声明和定义都赋值,将会出现重定义的错误
void fun2(int a=2); //声明
int main()
{fun2(); //调用return 0;
}
void fun2(int a=1) //定义
{//something...
}
2.函数不接受 0 个参数
如果是在定义处赋值,错误原因:函数不接受 0 个参数
void fun2(int a); //声明
int main()
{fun2(); //调用return 0;
}
void fun2(int a=1) //定义
{//something...
}
因此,在对函数设置参数默认值时,要在声明处进行赋值!
总结
使用函数参数默认值,可以使得某些参数可以在调用函数时省略,使用预设好的默认值。
设定函数参数默认值时,要注意以下几点:
-
在函数调用如果不想采用默认值,则需要显式地提供参数值!
-
如果函数有多个参数,从右向左依次指定默认值,中间不能有间断!
-
一般只在声明处指定一次,否则会产生二义性错误!
本文全部代码(供自己调试查看):
#include <iostream>
using namespace std;
void fun1(int a=1)
{cout <<__FUNCTION__<<" " << a << endl;
}void fun1_2(int a, int b = 2, int c = 3)
{ //函数参数指定默认值顺序:从右向左依次指定,中间不能有间断cout << __FUNCTION__ << " " << a << " " << b << " " << c << endl;
}
void fun2(int a=1); //声明和定义分开时,一般在声明处赋予函数参数默认值 //1.声明和定义都赋值:重定义 //2.在定义处赋值: 函数不接受 0 个参数int main()
{fun1(1314);//fun1_2(777);//fun2();return 0;
}void fun2(int a)
{cout << a << endl;
}
大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。 |
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●) |