#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]
это дало бы вам искомый элемент, я полагаю.