C++ Primer笔记(10)

数组形参
void printValues(int*);
void printValues(int[]);
void printValues(int[10]);//以上三种是等价的。
通常,将数组形参直接定义为指针要比使用语法定义更好。
第三种方式,形参的长度容易引起误解。
当编译器检查数组形参关联的实参时,它只会检查实参是不是指针、指针的类型和数组的类型是否匹配,而不会检查数组的长度。

大部分情况下,数组以普通的非引用类型传递,此时数组会转换为指针。形参复制的是这个指针的值,而不是数组元素本身。函数可以通过该指针改变它所指向的数组元素的值。不需要改变数组形参的元素时,函数应该将形参定义为指向const对象的指针。
void f(const int*);

通过引用传递数组
数组形参可声明为数组的引用。如果形参是数组的引用,编译器不会将数组实参转化为指针,而是传递数组的引用本身。在这种情况下,数组大小成为实参和形参的一部分,编译器会检查数组实参的大小与形参的大小是否匹配。
void printValues(int(&arr)[10]);
printValues函数只接受含有10个int数值的数组。

传递给函数的数组的处理
1、在数组本身放置一个标记来检测数组的结束。
2、传递指向数组的第一个和最后一个元素的下一个位置的指针

3、第二个参数传入数组的大小。

两种局部对象
自动对象---当定义它的函数被调用时才存在的对象,函数结束时,自动对象就会被撤销。
静态局部对象---不迟于在程序执行流程第一次经过该对象的定义语句时进行初始化,一旦创建,在程序结束前不会被撤销。

内联函数---避免函数调用的开销---内联机制适用于优化小的、只有几行的而且经常被调用的函数,大多数的编译器都不支持递归函数的内联。内联函数应该在头文件中定义,这一点不同于其他函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值