C++ 学习之函数传参2:vector和数组传参

前面一篇博客讲到了在函数的传参中数组是不能依靠复制传递的,而vector是可以复制的,但是由于vector中通常会含有很多元素,为了避免大量的复制,可以将容器实参以引用的方式避免复制。下面主要讲讲在实际当中,对数组和容器的传参的习惯手法。

 

1.数组传参

1)使用指针传参(数组除了不能够具有直接复制的特性,还有一个特性,就是数组名通常情况下会自动转化为指向其第一个元素的指针)

具体形式有

void   size_array( int *);

void   size_array( int array[]);

void   size_array( int array[size]);

这三种形式是等价的,形参类型其实都是int *,其中第三种方式比较令人费解,主要是使用了数组长度,但在C++中,编译器会忽略数组形参的长度,值对类型匹配进行检测。

2)使用引用传递数组

此情况下,数组的长度和类型都会被编译器检测。形参的长度和实参的必须完全一致。

注意它的格式是:

int size_array(int (&arr)[10] ) {..................};

int array[10];

int a = size_array(array );

函数size_array中的的长度10一定要和实参的长度一致。

2.容器传参 

容器传参通常采用传递指向要处理元素的迭代器来传参。

个人觉得在处理数组和容器的传参问题上,主要还是使用指针或者迭代器比较方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值