1 一维数组做参数
数组作为函数的参数,是指以数组名作为实际参数传递给函数。用数组名做函数参数时,不是进行直接的值传递,而是地址的传送,也就是把实参数组的首地址赋予形参数组名。
比如,下面声明了一个数组为函数的参数
int func(int a[10]);
用数组作函数参数,数组的参数是没有意义的。上边的函数声明同以下的声明是等效的:
int func(int a[])
int func(int a[100])
所以在函数定义的时候,不能依赖于数组参数中数组的长度。实际上,编译器会自动将数组参数当做指针进行解释,这个指针指向一块连续的内存。而且这个指针不会保存长度信息,所以函数声明时数组的长度是没有意义的。为此,可以在参数列表中附加一个参数,用以传递数组的长度:
int func(int a[],int n)
2 多维数组做参数
函数在传递二位数组参数时,需明确最后一维的大小,否则将出现编译错误。下面函数average()用于接收用户输入的若干位同学的3门成绩,计算每一门成绩的平均成绩并输出。
#include<iostream>
using namespace std;
void average(float array[][3], int n, int m)
{
float sum = 0, gra[3];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> array[i][j];
sum += array[i][j];
}
gra[i] = sum / n;
sum = 0;
}
cout << "三门课的平均成绩:" << endl;
for (int k = 0; k < n; k++)
cout << gra[k] << endl;
}
int main()
{
float array[3][3];
cout << "输入三位同学的3门成绩:" << endl;
average(array, 3, 3);
system("pause");
return 0;
}