一.缺省参数
1.缺省参数概念
- 缺省参数是声明或定义函数时为函数的参数指定一个默认值。
- 在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。
void Func1(int a = 0) { cout << a << endl; } int main() { Func(); // 没有传参时,使用参数的默认值,输出结果为0 Func(10); // 传参时,使用指定的实参,输出结果为10 }
2.缺省参数分类
2.1半缺省参数
void Func2(int a, int b = 2, int c = 3) {//调用此函数时必须给a传参数 cout << "a=" << a << endl; cout << "b=" << b << endl; cout << "c=" << c << endl; }
注意:
- 规定只能从右往左缺省,不能从左往右或者间隔缺省。
-
错误示例1:
void Func3(int a = 1, int b, int c) { cout << "a=" << a << endl; cout << "b=" << b << endl; cout << "c=" << c << endl; }
错误示例2:
void Func4(int a = 1, int b, int c=3) { cout << "a=" << a << endl; cout << "b=" << b << endl; cout << "c=" << c << endl; }
- 缺省参数不能在函数声明和定义中同时出现
//test.h void TestFunc(int a = 10); // test.c void TestFunc(int a = 20) {} // 注意:如果在声明与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用哪个缺省值。
2.2全缺省参数
void Func5(int a=1, int b = 2, int c = 3) {//此函数在调用时可以不传任何参数 cout << "a=" << a << endl; cout << "b=" << b << endl; cout << "c=" << c << endl; }
- 缺省值必须是常量或者全局变量
- C语言不支持使用缺省参数(编译器不支持)