Ошибка во время выполнения с массивом

#c

#c

Вопрос:

Я не могу понять, почему я получаю ошибку во время выполнения:

переменная ia используется без инициализации.

Однако, насколько я вижу, я его инициализировал.

 #include <iostream>
using namespace std;

int main()
{
    //array dimensions
    const int row_size = 2;
    const int col_size = 4;

    //array definition
    int ia[row_size][col_size] = {{0, 1, 2, 3},{5, 6, 7, 8}};

    cout << ia[2][4];

    system("PAUSE");
    return 0;
}
  

Комментарии:

1. ia[2][4] недопустимо. Подсчет начинается с 0, а не с 1. Вы, вероятно, имели в виду ia[1][3] .

Ответ №1:

Индексы массива C основаны на нуле. Итак, чтобы получить доступ к четвертому столбцу второй строки, вам необходимо получить доступ ia[1][3] .

Комментарии:

1. Ах, такая простая оплошность … спасибо даст вам зеленую отметку.

Ответ №2:

 ia[2][4]
  

не существует.

 ia[0..1][0...3]
  

однако все они существуют.

Попробуйте:

 cout << ia[1][3];
  

Массивы в C начинаются с индекса 0 . 1 на самом деле это 2 nd-элемент. Итак:

 int a[2] = {42, 50};

std::cout << a[0] << a[1];   // prints 4250
std::cout << a[2];           // a[2] doesn't exist!
  

Ответ №3:

Индексы массива начинаются с 0, поэтому ваши ia[2][4] данные будут вне пределов. Должно быть ia[1][3] .

Ответ №4:

Массивы основаны на 0, то есть первый элемент в массиве a равен a[0] . Таким образом, последний элемент в массиве из 4 элементов будет a[3] . В вашем случае ia[1][3] это дало бы вам искомый элемент, я полагаю.