c++入门——参数缺省

1.参数缺省的概念  

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

如图 当传参数时,输出传入参数   不传参数时,输出默认参数

_通俗点讲,就是在定义函数的时候可以给形参赋一个初始化的值,这个值就叫做缺省值,缺省值可以有一个,也可以有多个


2.参数缺省的分类

2.1全缺省参数(备胎的使用方法)

_传递方式说明 

全缺省参数   给每一个行参值都赋上缺省值   

_调用函数传入三个参数  

这个时候  函数的所有正主位置都被占用了  备胎就滚一边去  不需要  

_调用函数传入两个参数

这个时候 函数有两个正主位置都被占用了 还剩下一个位置是空的 备胎要上场了

可能今天的函数  缺少第三个正主给它买包包  然后就叫上了三号备胎 恰好三号备胎有钱

_调用函数传入一个参数

今天的函数只有一个正主在 函数乘此机会叫来了二号和三号备胎

二号备胎今天陪它逛街吃饭 三号备胎陪它看电影 

_ 调用函数不传参数

函数今天乐坏了 一个正主都不在 直接起飞 叫来了所有备胎 

上午先和一号备胎一起去读书看报 下午和二号备胎去打牌娱乐 晚上和三号备胎共进晚餐

_注:函数使用备胎 是从右往左的顺序 正主的存在是从左往右传入 

可不要被备胎迷惑 乱了阵脚 次序颠倒 会被抓个正着  !!!


2.2半缺省参数()

相比全缺省参数 半缺省顾名思义 就只有一部分缺省(备胎少了 有一直存在的正主)

_都是缺省家族 备胎使用顺序肯定也是从右往左 

如果顺序不对 那就遭老罪咯

另外 备胎不能跳着用 看图 

别问为什么  可能是缺省家族觉得玩的太花了不好  

总之 用了缺省家族的方式 就得按照 它的规矩来  

从右往左赋缺省值 从左往右确定形参 

_当没有缺省参数时 调用函数必须让他确定正主 不能少 只能多 

这两种都是可以的 (备胎可有可无)

_注:

缺省值必须是常量或者全局变量

形参缺省不是缺了一个值,而是给了一个默认参数值。 

不仅是在给出半缺省形参值时需要注意   从右往左依次连续给出

在给具有半缺省参数的函数传递实参的时候,要注意传入实参的个数必须符合给出的缺省形参个数 (只多不少)


还有一点!!!

_缺省参数不能在函数的声明与定义中同时出现
 

cpp                                                        函数的定义

函数的声明  

_当在函数的定义中 赋参数缺省值

可以看到 若是在声明和定义中同时给出函数的缺省参数 此时就会出现【重定义默认参数】的问题

我所给出的值是相同的    若是两边给出的值不同的话   编译器在编译的时候就会产生歧义   不知道使用哪一块的参数

一般我们会选择放在函数的声明处  因为声明处的头文件其他.cpp文件可以包含   若是将这些缺省参数放在放在了定义处   其他文件就没办法使用到了

_原因就是:

编译时会对语法进行检查   编译之前会有头文件展开   如果声明是没有带默认参数   你又没有传参  自然就会报错   而声明有默认参数   你不传带有默认的参数   编译自然能过   链接时将函数地址填写过来即可


3.参数缺省的实际运用——栈

在数据结构——栈中的应用

定义了一个结构体和一个初始化StackInit的函数  栈的初始大小为4

定义一个普通栈  对其进行初始化  然后再做一些入栈和出栈的操作   可能会出现栈容量不够的情况  所以在Push有一个扩容的逻辑  但是一直扩容也会存在消耗  因为一开始只有4个空间大小   然而一开始就给很大的空间又会浪费  太小了又不合适   这个时候我们的缺省家族  缺省参数就派上用场了   对栈的初始化函数进行一个小小的修改  

在函数声明中  添加一个缺省参数  函数定义中直接传值  

定义了三个栈   当确定栈的大小时  可以直接传入参数   不知道栈的大小时  就不传入  在函数声明中默认为4  (也就是备胎上场)

当然  参数缺省也不止这一个用例   还有很多很多   目前只会这一点点   大家见谅  ^_^


总结:

本篇文章了解了参数缺省的概念  以及分类   还有关于备胎的使用以及各种细节

核心就是:

缺省值可以有一个,也可以有多个 ,从右往左赋缺省值 从左往右确定形参 顺序不能乱!!!

至于缺省参数更多方面的实际应用   会在c++的学习中慢慢和大家分享 ^_^   ^_^ 


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值