这是一个求数组元素之和的程序
下面是错误代码
#include <iostream>
using namespace std;
int main()
{
int Array[]={5,8,6};
int SumOfArray;
SumOfArray=Sum(Array);
cout<<SumOfArray;
}
int Sum (int a[])
{
int sum=0;
for (int i=0;i<( sizeof(a) / sizeof(int) );i++)
sum += a[i];
return sum;
}
该程序的输出结果是:5
而不是我们所期待的:19
经过debug,终于发现问题所在!
原来Sum函数定义里面(sizeof(a)/sizeof(int))返回值是1,而不是我们期待的数
但是如果这样修改
#include<iostream>
using namespace std;
int Sum(int a[],int len);
int main()
{
int Array={5,8,6};
int SumOfArray;
SumOfArray = Sum (Array,(sizeof(Array) / sizeof(int) ));
cout<<SumOfArray;
}
int Sum(int a[],int len)
{
int sum = 0;
for(int i = 0;i < len;i++)
sum +=a[i];
return sum;
}
这样得到的结果就是我们所希望的:19
经过后面指针的学习,找到了问题所在:
传递的数组参数在Sum()中,实际上是一个指针
所以声明Sum(int a[] , int len )等价于Sum(int * a , int len)是等价的