【发布时间】:2015-06-11 12:53:31
【问题描述】:
我经常遇到分段错误,即使我知道它是因为访问受限内存而发生的,但我似乎不知道如何纠正它。 当我调用另一个函数时,我通常会遇到它。
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
long int xyz(int n)
{
vector<int> a;
vector<int> b;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
cin>>b[i];
}
long int sum=0;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
sum=sum+((a[j]-a[i])*max(b[i],b[j]));
}
}
return sum;
}
int main()
{
int n;
long int final;
cin>>n;
for(int i=0;i<n;i++)
{ int n;
cin>>n;
final=xyz(n);
cout<<final<<endl;
}
return 0;
}
【问题讨论】:
-
在
main函数中,使用两个具有相同名称、类型和使用方式的变量,但范围不同,这将是一个很大的混淆源。