Добро пожаловать в блог официального сайта www.cplus-plus.ru

Все представленные материалы в этом блоге находятся по адрусу www.cplus-plus.ru 
Сайт разработан с целью удобного изучения объектно-ориентированного программирования языка C++. Сайт содержит: большое количество cред разработки, видеоуроков, исходников, учебников C++ как для начинающих, так и для продвинутых!

Поиск по этому блогу

Каталог статей

четверг, 14 октября 2010 г.

Двумерные массивы в C++

Двумерный массив – это одномерный массив из одномерных массивов.
Для примера определим двумерный массив m размером 3 x 4.

int m [3] [4] ;

Покажем, что такое определение логически вытекает из представления о двумерном массиве как об одномерном массиве из одномерных же массивов.

Начнем с того, что сначала объявим промежуточный тип M – одномерный массив из 4-х целых чисел

typedef int M [4];

Теперь определение M x; означает тоже самое, что int x[4];, каким бы ни было выражение x.

Определим одномерный массив из элементов типа M, т.е. массив символов.

M m[3];

В роли x здесь выступает выражение m[3]. Подставим его в int x[4]; и получим объявление двумерного массива без промежуточного типа M, как это обычно и делается.

int m[3][4];

Исходя из общего принципа размещения элементов массива в памяти (плотно и в порядке возрастания номеров), можно утверждать, что элементы двумерного массива m[3][4] займут места в памяти в следующем порядке: m[0][0], m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2]2], m[2][3].

Пример. Ввести матрицу M размера 3 x 3. Поменять местами начальную и последнюю строки и вывести результат на экран.

// объявить, определить и инициализировать массив
int M [3] [3] = {{11,12,13}, {21,22,23}, {31,32,33}};
// поменять местами строки
for (int j = 0; j < 3; j++)
{
int R = M [0] [j];
M [0] [j] = M [1] [j];
M [1] [j] = R;
}
// вывести массив построчно
for (int i = 0; i < 3; i++)
{
for (j=0; j < 3; j++)
{
cout << M [i] [j] << " ";
}
cout << endl;
}

Источник: http://www.cplus-plus.ru

4 комментария:

  1. for (j=0; j < 3; j++)
    Забыли поставить идентификатор int перед j

    ОтветитьУдалить
  2. Не помешало бы краткое определение typedef

    ОтветитьУдалить

Объектно-ориентированное программирование на языке C++