【P95 12】C++ 函数提高—函数参数(默认参数、占位参数)

P95 12

函数参数(默认参数、占位参数)

1 函数默认参数

在这里插入图片描述
//形参不设置默认值,则实参不可缺省
//函数默认参数,实参可缺省,缺省后缺的用默认值,不缺的用传参值
有默认值,调用时,可以都可缺省

//形参不设置默认值,则实参不可缺省
#include <iostream>
using namespace std;

//形参设置默认值,则实参3个都不能少
int func(int a, int b, int c)
{
	return a + b + c;
}
int main() 
{
	cout << func(10,20,30) << endl;
	return 0;
}

在这里插入图片描述
//函数默认参数,实参可缺省,缺省后缺的用默认值,不缺的用传参值

#include <iostream>
using namespace std;

//函数默认参数,实参可缺省,缺省后缺的用默认值,不缺的用传参值
int func(int a, int b=20, int c=30)
{
	return a + b + c;
}
int main() 
{
	cout << func(10) << endl;//实参可缺省,缺省后缺的用默认值,不缺的用传参值
	return 0;
}

在这里插入图片描述

实参可缺省,此时a,b用实参值,c缺省用默认值
#include <iostream>
using namespace std;

//函数默认参数

//实参可缺省,缺省后缺的用默认值,不缺的用传参值
//如果我们自己穿入数据,就用自己的数据,如果没有,就用默认值

//语法:返回值类型 函数名(形参=默认值){}

int func(int a, int b=20, int c=30)
{
	return a + b + c;
}
int main() 
{
	cout << func(10,30) << endl;//实参可缺省,此时a,b用实参值,c缺省用默认值
	return 0;
}

在这里插入图片描述
有默认值,调用时,可以都可缺省

int func3(int a=1, int b=2)//函数实现
{
	return a + b;
}
int main() 
{
	cout << func3() << endl;//有默认值,调用时,可以都可缺省
	return 0;
}

在这里插入图片描述

2 注意事项

**//注意事项

//1.如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值**

//2.如果函数声明有默认参数,函数实现就不能有默认参数
// 如果函数实现有默认参数,函数声明就不能有默认参数
// 声明和实现只能有一个有默认参数

//1.如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值

在这里插入图片描述
出错

int func2(int a, int b = 20, int c = 30,int d )//b有了默认参数,那么从b往后都要有,否则出错
{
	return a + b + c;
}

正确

int func2(int a, int b = 20, int c = 30, int d=40)
{
	return a + b + c;
}


int func2(int a, int b , int c, int d = 40)
{
	return a + b + c;
}


int func(int a, int b=20, int c=30)
{
	return a + b + c;
}
//2.如果函数声明有默认参数,函数实现就不能有默认参数
//  如果函数实现有默认参数,函数声明就不能有默认参数
// 声明和实现只能有一个有默认参数
int func3(int a, int b);//函数声明

int func3(int a=10, int b=20 )//函数实现
{
	return a + b;
}
int main() 
{
	cout << func3(10,30) << endl;
	return 0;
}

在这里插入图片描述

函数声明和实现都有默认参数,不显示错误,但编译报错;
重定义,即二义性
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

正确

// 声明和实现只能有一个有默认参数

int func3(int a=10, int b=20);//函数声明

int func3(int a, int b)//函数实现
{
	return a + b;
}
int main() 
{
	cout << func3(10,30) << endl;
	return 0;
}

在这里插入图片描述
//有默认值,调用时,可以都可缺省

int func3(int a, int b);//函数声明

int func3(int a=10, int b=20)//函数实现
{
	return a + b;
}
int main() 
{
	cout << func3() << endl;//有默认值,调用时,可以都可缺省
	return 0;
}

在这里插入图片描述

3 函数占位参数

在这里插入图片描述

//占位参数
//返回值类型 函数名(数据类型){}
//占位参数,在调用时要填补参数
//占位参数还可以有默认值

//占位参数,先做简单了解,后面再详细介绍

#include <iostream>
using namespace std;

void func1(int a)//第一个形参
{
	cout << "this is a function 1" << endl;
}

//占位参数
//返回值类型 函数名(数据类型){}
//占位参数,先做简单了解,后面在详细介绍

//占位参数,在调用时要填补参数
void func2(int a, int)//第一个形参,第二个int占位
{
	cout << "this is a function 2" << endl;
}

//占位参数还可以有默认值
void func3(int a, int=10)//第一个形参,第二个int占位
{
	cout << "this is a function 3" << endl;
}

int main() 
{
	func1(10);

	//func2(10);//报错,占位参数,在调用时没有填补参数
	func2(10,10);

	func3(10);
	return 0;
}

在这里插入图片描述

参考:
哔哩哔哩 黑马程序员

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R-G-B

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值