数组传递:将数组作为参数传递给函数,分值传递和地址传递。其中,值传递的效率较低,不建议使用。两种传递方式都会改变main函数中数组的值,如下代码中a[3]的结果都为6。注意区分数组的值传递和函数值传递的区别。
//数组的两种传递方式
#include<iostream>
using namespace std;
//值传递
void fun1(int a[5]){
a[3] = 6;
}
//地址传递
void fun2(int *a){
a[3] = 6;
}
//主函数
int main(){
int a[5] = {1,2,3,4,5};
fun1(a);//值传递 方式1
fun2(a);//地址传递 方式1
fun1(&a[0]);//值传递 方式2
fun2(&a[0]);//地址传递 方式2
cout<<"a[3] = "<<a[3]<<endl;
return 0;
}
另外,fun1(a)和fun1(&a[0])、fun2(a)和fun2(&a[0])都是等价的,a表示数组的首地址,&a[0]表示数组的第一个元素的地址,因而a==&a[0]。