這是一個求數組元素之和的程序
下面是錯誤代碼
#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)是等價的