因为数组名可以用做地址,所以也可以把数组名作为参数传递给函数。
此时,会复制数组的地址,并把它传递给被调用的函数,这样做优点如下:
1.传递数组的地址比按值传送数组更高效,因为复制大的数组很耗时间。(实际上,数组不能按值传递。
2.被调用的函数不能处理原数组地址,而是处理该数组地址的副本。,这样就可以把参数作为指针来看待,包括修改它包含的地址。
下面是个例子:计算多个数的平均值,这些数放在传送给函数的数组中。
#include <iostream>
#include <iomanip>
using namespace std;
double average(double array[],int count);
int main()
{
double values[] = {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0};
cout << endl
<< "Average="
<< average(values, (sizeof values) / sizeof values[0])
<< endl;
return 0;
}
double average(double array[], int count)
{
double average;
average += *array++;
return average;
}
自己写的上面代码,
不知道为什么是0.1.可能是指针用的不对。后来发现是因为没有for循环,只是计算了一个array[0]=1,再除以10=0.1
#include <iostream>
#include <iomanip>
using namespace std;
double average(double array[],int count);
int main()
{
double values[] = {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0};
cout << endl
<< "Average="
<< average(values, (sizeof values) / sizeof values[0])
<< endl;
return 0;
}
double average(double array[], int count)
{
double average=0;
for (int i = 0; i < count; i++)
{
average += array[i];
}
return average/count;
}
说明:
函数average()可以用于处理任意长度的数组,从函数原型可以看出,他接受两个参数,数组和数组元素中的个数:
double average(double array[],int count);
第一个参数制定类型为double类型的数组。不能在方括号中制定数组的大小,即使指定也没有用。count表示数组中元素的个数。上面的例子将传送给average()函数的数组元素使用正常的数组表示法来访问。也可以把传递给函数的数组看作指针,下一篇博客介绍数组做指针运算。