转自
http://media.openonline.com.cn/media_file/200708/fushi/0803/C++yuyancxsj/web/lesson/chapter8/j4.htm
传递给自定义函数
若要让一个函数求数组元素的和,需传递一个数组参数和数组大小参数。因为从传递 的数组参数(地址)中,没有数组大小的信息。
例如,下面的程序调用一个函数求数组元素之和:
//*********************
//** ch7_5.cpp **
//*********************
#include <iostream.h>
int sum(int [], int);
void main()
{
static int ia[5]={2,3,6,8,10};
int sumOfArray;
sumOfArray=sum(ia, 5);
cout <<"sum of array: " <<sumOfArray <<endl;
}
int sum(int array[], int len)
{
int iSum=0;
for(int i=0; i<len; i++)
iSum+=array[i];
return iSum;
}
运行结果为:
slim of array:29
sum()函数以整数数组作为第一个参数, 以整数作为第二个参数。由于传递数组实际上传递的是地址,所以函数原型中,数组参数的书写形式无须在方括号中写明数组大小。如果写明了数组大小,编译器将忽略之。数组形参的空方括号只是告诉函数,该参数是个数组的起始地址。由于数组参数是地址,对数组参数不能通过sizeof求得数组大小, 所以sum()函数必须要第二个参数:数组的大小。