我的小小学习笔记(5)之C++-----缺省函数

本文详细介绍了C语言中缺省参数的概念与使用规则,包括全缺省与半缺省参数的区别,以及如何正确地在函数声明和定义中应用缺省参数。并通过实例展示了缺省参数可能带来的二义性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缺省函数(C语言不支持)

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。

【注意】
1. 带缺省值的参数必须放在参数表的最后面。(服从半缺省的规则)
2. 缺省参数不能同时在函数的声明和函数定义中出现,二者只能选其一。

     声明  void FunTest(int a=10);

     定义  void FunTest(int a)

              { }

       *最好放在声明位置
3. 缺省值必须是常量或全局变量。
4. 缺省参数必须通过值参或常参传递。


*缺省分为全缺省和半缺省。

(1)全缺省:每个缺省值都给出。

void FunTest(int _iParam1 = 0, int _iParam = 1)

{ }

举个例子

void FunTest(int a=0,int b=0,int c=0)
{
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
}
int main()
{
FunTest();//0,0,0
FunTest(10);//10,0,0
FunTest(10,20);//10,20,0
FunTest(10, 20,30);//10,20,30
return 0;
}

注意:慎用缺省函数,否则会产生二义性
void FunTest ()
{}
void FunTest (int a = 10 )
{}

假如使用不带实参方式调用FunTest()函数时,编译器将不知道调用哪一个,产生二义性。

(2)半缺省:缺省值并没有全部给出。

*从右向左依次给,不能隔着给,也不能跳着给

void FunTest(int _iParam1, int _iParam2 = 0 )          可以
{}
void FunTest(int _iParam1, int _iParam2 = 0 , int _iParam3/* = 0*/)      不可以
{}
void FunTest(int _iParam1, int _iParam2 /* = 0*/,int _iParam3 = 0)            看情况(如下)

{}

第一种情况

void FunTest(int a,int b=0,int c=0)
{
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
}
int main()
{
FunTest();//编不过去
FunTest(10);//10,0,0
FunTest(10,20);//10,20,0
FunTest(10, 20,30);//10,20,30
return 0;
}

第二种情况

void FunTest(int a,int b,int c=0)
{
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
}
int main()
{
FunTest();//出错
FunTest(10);//出错
FunTest(10,20);//10,20,0
FunTest(10, 20,30);//10,20,30
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值