数组做形参时基本有三种情况,如下
①int Func(int *arr, size_t length); //返回值为int类型只为举例,下同
②int Func(const int *beg, const int *end);
③int Func(int (&arr)[10]);
上述三种方式中:①传递的是数组首地址和数组长度,②传递的是数组首地址和数字末尾元素的下一个地址,③传递的是数组的引用。
当这样时:int Func(int arr[10]),编译器会忽略数组的长度,而仅仅当作一个指针来看,而如果传递的是数组应用的话就完全没有问题。
下面将分别举例
①
int Func(int *arr, size_t length)
{
int sum = 0;
while(length --)
{
sum += arr[lenght];
}
return sum;
}
②
int Func(const int *beg, const int *end)
{
int sum = 0;
const int *p = beg;
while(p != end)
{
sum += *p++; //执行步骤:sum += *p; p ++;
}
return sum;
}
③int Func(int (&arr)[10])
{
int sum = 0;
size_t length = 0;
while(length --)
{
sum += arr[length];
}
}
NOTE: 当调用③时,数组必须也是10个的大小。