2015-11-14 4 views
-4

Я пытаюсь запустить простой код на 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; 
} 

я получил ошибку сегментации. любые разъяснения?

+1

Uninitialized т, индексирование недоступный .... –

+0

Параметр 'T' содержимое переменной не определено при объявлении массива. –

ответ

0

Вы должны изменить порядок строк здесь:

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

и лучше использовать std::vector<int> arr(t); для портативности

+1

Это предполагает массивы переменной длины, которые не являются частью C++. Попробуйте использовать динамическое распределение памяти или 'std :: vector'. –

0
  1. Использование std::vector вместо массивов, потому что она может расти динамически.

  2. Если вы хотите создать массивы, размер которых определяется во время выполнения, используйте new как в:

    беззнаковое целочисленное значение т = 0;
    cin >> t;
    int * p_array = new int [t];

    Не забывайте использовать delete [];, когда закончите работу с массивом.

Смежные вопросы