1.数组元素作函数参数
- 数组元素作函数实参,用法与一般变量作实参相同,是“值传递”。
- 例:有两个数据系列为:
int a[8]={26,1007,956,705,574,371,416,517};
int b[8]={994,631,772,201,262,763,1000,781};
求第三个数据系列c,要求c中的数据是a、b中对应数的最大公约数。
int gys(int m,int n)
{
int r;
if(m<n) { r=m; m=n; n=r; }
while(r=m%n) { m=n; n=r; }
return n; }
void main(void)
{ int a[8]={26,1007,956,705,574,371,416,517};
int b[8]={994,631,772,201,262,763,1000,781};
int c[8];
for(int i=0;i<8;i++)
c[i]=gys(a[i],b[i]); //求对应元素的公约数
for(i=0;i<8;i++)
cout<<c[i]<<'\t';
cout<<endl;
}
2.用数组名作函数参数
- 在C++中,数组名被认为是数组在内存中存放的首地址。
- 用数组名作函数参数,实参与形参都应该用数组名。
- 函数传递的是数组在内存中的地址。
- 实参中的数据地址传到形参中,实参形参共用同一段内存。
例:
void fun(int a[2])
{ for(int i=0;i<2;i++)
a[i]=a[i]*a[i];
}
void main(void)
{ int b[2]={2,4};
cout<<b[0]<<‘\t’<<b[1]<<endl;
fun(b);
cout<<b[0]<<‘\t’<<b[1]<<endl;
}
- 输出: 2 4
4 16
解析:数组b和数组a占据同一段内存;a同样为数组首地址,也是2000H。

注意:
- 用数组名作函数参数,应在主调函数和被调函数中分别定义数组,且类型一致。
- 需指定实参数组大小,形参数组的大小可不指定。数组名作实参实际上是传递数组的首地址。
- 数组名代表数组在内存中存储的首地址。数组名作函数实参实际上传递的是数组在内存中的首地址。实参和形参共占一段内存单元,形参数组中的值发生变化妈耶相当与实参数组中的值发生变化。