C++学习笔记(四)——关于数组作为函数参数的值传递和引用传递


1.首先,数组作为函数参数和普通的参数是有区别的,我们知道普通的参数如同void insert(int a,int b)之类的传递分为值传递,指针传递,指针值的传递,引用传递,它们的参数的传递是将实参的值赋给形参。但是在数组中,值传递就是指针地址的传递,对于数组来说却是一个例外,因为数组的数据太多了,将其一一赋值既麻烦又浪费空间,所以数组作为参数传递给函数的只是数组首元素的地址,函数在需要用到后面元素时再按照这个地址和数组下标去查找。所以,函数调用的数组会对本身的数组造成影响,这点和值传递是不同的。

同时,作为函数形参的数组和指针可以互换,这种转换仅限于函数形参的声明。这是一种便利,传递时数组会蜕变为指针,事实上数组从来没有传入过函数。
eg:以下3个声明是等价的
 void insert(int *);
 void insert(int []);
 void insert(int [10]);

数组长度不是参数类型的一部分。函数和编译器都不知道传统给它的数组的长度的大小。


2.如果我们要传入指定长度数组,又该怎么办呢?

我们可以将参数声明为数组的引用,此时,数组长度成为形参和实参的一部分。

eg:void insert( int (&arr)[10])


3.关于对象数组




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值