1、形参中的中括号;
eg:下面举个简单例子进行介绍
fun(string[, offset[, length]][, encoding]);
说明:上面的 fun 函数中有四个形参,其中参数 string 是要求必须传入的,而针对带有中括号的形参 offset、length、encoding 按需求选择性传入,即可传也可以不传;针对 [, offset[, length]] 情况,形参[, length] 在形参 [, offset] 所在的中括号中时,如果想传入 length 参数,则必须传入 参数 offset ;
2、数组作为形参;
eg:下面举个简单例子进行介绍
func(int a[],int b);
func(int *a,int b);
func(int a[10],int b);
说明:针对数组作为形参,上述三个函数是等价的,目的都是把数组传入到函数中,其实质都是传入数组的首地址;
3、以引用的形式传参;
eg:下面举个简单例子进行介绍
void func(int &x,int &y){} //定义;
func(a,b);
4、指针作为形参;
eg:下面举个简单例子进行介绍
void func(int* x,int* y){} //定义;
func(&a,&b);
说明:注意区分指针形参和按引用传参,易混淆;
5、函数参数列表中如果前面的做了初始化,那么后面的都应该进行初始化;
eg:下面举个简单例子进行介绍
int fun(int a,int b=10,int c=11); //正确
int fun(int a,int b=10,int c); //不正确
6、在形参列表中定义函数;
//先对二维数组进行排序
//如果第一维不同,则第二维升序;如果第一维相同,则第二维降序
sort(envelopes.begin(), envelopes.end(), [](const auto& e1, const auto& e2) {
return e1[0] == e2[0] ? e1[1] > e2[1] : e1[0] < e2[0]; });
//暂且可以认为 [] 用来接收函数的返回值,且在形参列表中定义函数时,参数类型可以用 auto
//如果正常情况下定义函数时,函数的参数类型不可以使用 auto
//在形参列表中定义函数多用于 sort 函数排序