一、缺省参数
1、C/C++函数空参数的区别
- 在C语言中,函数没有指定参数列表时,默认可以接收任意多个参数;
#include<stdio.h> void Test() { } int main() { Test(10); Test(10, "hello"); return 0; }
- 在C++中,因为有严格的参数类型检测,所以函数没有参数列表时,默认为void,不接收任何参数。
#include<iostream> using namespace std; void Test() { } int main() { Test(10); Test(10, "hello"); return 0; }
2、缺省参数概念
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。
#include<iostream> using namespace std; void Func(int a = 0)//给参数a指定一个缺省值 { cout << a << endl; } int main() { Func(); // 没有传参时,使用参数的默认值,输出为0 Func(10); // 传参时,使用指定的实参,输出为10 return 0; }
3、缺省参数分类
- 全缺省参数
void Func(int a = 10, int b = 20, int c = 30) { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"c = "<<c<<endl; }
- 半缺省参数
void Func(int a, int b = 10, int c = 20)//此时a必须要接受到参数 { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"c = "<<c<<endl; }
注意:半缺省参数必须从右往左依次缺省,不能间隔着缺省
void Func(int a=10, int b , int c = 20)//报错 { cout << "a = " << a << endl; cout << "b = " << b << endl; cout << "c = " << c << endl; }
二、注意事项
- 半缺省参数必须从右往左依次来给出,不能间隔着给
#include<iostream> using namespace std; void Func(int a=10, int b=20 , int c = 30) { cout << "a = " << a << endl; cout << "b = " << b << endl; cout << "c = " << c << endl; } int main() { Func(1, 2, 3); Func(1, 2); Func(1, ,3);//报错 return 0; }
- 缺省参数不能在函数声明和定义中同时出现,应该在声明中给予缺省值
#include<iostream> using namespace std; void Func(int a = 10); int main() { Func(); return 0; } void Func(int a = 10) { cout << "a = " << a << endl; }
- 缺省值必须是常量或者全局变量
- C语言不支持(编译器不支持)