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

来源:互联网 发布:电视机顶盒网络设置 编辑:程序博客网 时间:2024/05/22 00:51

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.关于对象数组




0 0
原创粉丝点击