C++Primer 笔记(六)

第六章 函数

函数基础

  1. 实参与形参的区别 ,实参是调用函数时使用的参数,形参是函数定义时使用的参数,
  2. 形参列表可以为空,但不能省略
  3. 大多数类型都能用于函数的返回类型,void不返回任何值;且返回值不能是数组,但可以是指向数组的指针
  4. 局部对象分为自动对象和局部静态对象,自动对象只存在于块的执行过程中,局部静态对象第一次经过对象定义语句时初始化,到程序中止才销毁,不受块的约束。

传递参数

  1. 当形参是引用类型时,对应的实参被引用传递,当实参的值被拷贝给形参时,形参和实参时两个相互独立的对象,实参被值传递。
  2. 值传递时,函数对形参的操作不会影响实参,对指针参数也是同样的,不会改变实参指针存储的内容,形参和实参是两个不同的指针(但指向了同样的地址)。
  3. 引用传递时,对形参的操作实际上是对实参的操作,会改变主调函数的变量。

建议使用引用类型的形参替代指针,由于大型的容器在传值调用时需要拷贝,耗费的时间长,且有些容器根本就不支持拷贝的操作
如果函数无需改变引用形参的值,声明为常量引用 ,以防被修改掉值P189

bool isShroter(const string &a,const string &b)
{
   
	return a.size() < b.size()
}

  1. 使用引用形参返回额外信息,如果想要返回多个量,可以在调用时传入存储该量的变量的引用
  2. const形参和实参,用实参初始化形参时会忽略形参的顶层const,也就是向一个const形参可以传常量或者非常量对象;底层const参数传递,必须具有相同的底层const类型,要么就是将非常量实参初始化底层const形参,但不能用底层const实参来初始化非常量形参。如果想在多个文件之间共享const对象,必须在变量定义之前添加extern关键字, Extern是声明外部变量,一般不对extern声明的变量赋值(因为会定义变量)变量只能被定义一次,但可以多次声明。
  3. 尽量使用常量引用,否则能传递给形参的实参类型会受到限制,如字符串字面量就无法传递给string &s类型的形参,并且调用该函数的其他函数在传递参数的时候也会有很大问题。
  4. 数组形参
    这三种都是传递指向数组首地址的指针
    形参格式
  • 管理数组的尺寸时,除了字符串里的’\0’标记,也可以显式传递大小,也可以将形参定义成数组的引用
void print(int (&arr)[10])
{
   
	for(auto elem:arr)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值