【C/C++】函数参数默认值

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述

c语言内容💖:

专栏:c语言之路重点知识整合

【c语言】全部知识点总结


一、介绍

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

当调用该函数时编译器无法确定应该为ac哪个参数传入缺失的值:

在这里插入图片描述

因此对函数设置参数默认值时,要按照从右到左的顺序!

四、声明处赋值!

当函数的声明和定义分开时,一般在声明处赋予函数参数默认值

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;
}


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)
  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天喜Studio

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

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

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

打赏作者

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

抵扣说明:

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

余额充值