c++primer里的一道题
int *a;
int a[];
int a[10];
三种形参都一样,都被认为是int *a。
能检测边界的只有这种 int(&a)[10]。
#include
using std::cin;
using std::cout;
using std::endl;
int Sum1(int *begin,int *end)
{
int sum=0;
while(begin!=end)
{
sum+=*begin;
++begin;
}
return sum;
}
int Sum2(int a[],size_t l)
{
int sum;
for(size_t i=0;i!=l;i++)
{
sum+=*a;
a++;
}
return sum;
}
int Sum3(int (&a)[10],int i)//这种形参传递了数组的大小
{
int sum=0;
int index=0;
while(a[index]<=i)
{
cout<
cout<
sum+=a[index];
cout<
++index;
if(index==10)
{
break;
}
cout<
}
return sum;
}
int main ()
{
const size_t length=10;
int a[length]={1,2,3,4,5,6,7,8,9,10};
cout<
cout<
cout<
return 0;
}