这个非常简单的代码,为啥用了函数就报错呢

题目是:输入n,在输入n个数<(2∧31-1)求这n个数的平方和
我的代码:
#include
#include
#include
#include
#include
using namespace std;
long long sum(long long data,int n)
{
long long ans;
ans=0;
for(int i=0;i<n;i++)
ans+=data[i]*data[i];
return ans;

}
int main()
{
long long data[1005];
int n;
while(cin>>n)
{
for(int i=0;i {
cin>>data[i];
}
cout<<sum(data,n)<<endl;
}
return 0;
}

你的sum函数的第一个形参定义成了longlong类型,而不是指针类型,但在main函数中传的是数组的名,相当于传的指针类型,所以形参那里定义成指针类型或者数组类型都可以。

这样?

 #include<iostream>
using namespace std;
long long sum(long long *data,int n)
{
    long long ans;
    ans=0;
    for(int i=0;i<n;i++)
        ans+=data[i]*data[i];
    return ans;
}
int main()
{
    long long data[1005];
    int n;
    while(cin>>n)
    {
        for(int i=0;i <n;i++)
        {
            cin>>data[i];
        }
        cout<<sum(data,n)<<endl;
    }
    return 0;
}

谢谢大家,是我的粗心,我忘了把sum函数中data后面加[ ]了,抱歉!抱歉!