分段错误来对数组求和

时间:2015-11-14 00:11:29

标签: c++

我试图在C ++中运行一个简单的代码,让用户输入一个数字数组并返回数组中的数字总和。 这就是代码:

int main() {

    int t;
    int arr[t];
    int sum=0;
    cin>> t;
    for(int i=0;i<t;i++)
    {
      cin>>arr[i];
    }
    for(int y=0;y<t;y++){
      sum+=arr[y];
    }
    cout<<sum;

    return 0;
}

我遇到了分段错误。任何澄清?

2 个答案:

答案 0 :(得分:0)

您应该在此处更改行的顺序:

int t;
cin>> t;
int arr[t];
int sum=0;

并最好使用std::vector<int> arr(t);来实现可移植性

答案 1 :(得分:0)

  1. 使用std::vector代替数组,因为它可以动态增长。

  2. 如果要创建大小在运行时确定的数组,请使用new,如下所示:

    unsigned int t = 0;
      cin&gt;&gt;吨;
      int * p_array = new int [t];

    记得在完成数组后使用delete [];