Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C2013.pdf
Скачиваний:
506
Добавлен:
03.03.2016
Размер:
7.63 Mб
Скачать

Алексеев Е.Р., Чеснокова О.В. Самоучитель по программированию на C/C++.

189

Рисунок 6.2: Блок-схема алгоритма обработки матрицы по столбцам

6.2Динамические матрицы

Впредыдущем параграфе мы рассмотрели описание статических матриц, в этом случае память для хранения матрицы выделяется в момент описания. Однако в С++ существует возможность создавать динамические матриц. Динамические матрицы можно создавать с использованием обычных указателей и с помощью двойных указателей. Рассмотрим оба способа работы с динамическими матрицами последовательно.

6.2.1 Использование указателей для работы с динамическими матрицами

При работе с динамическими матрицами можно использовать обычные указатели. После описания указателя, необходимо будет выделить память для хранения NxM элементов (N – число строк, M – число столбцов). Рассмотрим в качестве примера

выделение памяти для хранения целочисленной матрицы размером NxM. int *A, n, m;

A=(int *) calloc (N*M, sizeof(int));

Для выделения памяти можно использовать также и функцию malloc

A=(int *) malloc (N*M*sizeof(int));

или операцию new

A=new int [N*M];

Память мы выделили, осталось найти способ обратиться к элементу матрицы. Все элементы матрицы хранятся в одномерном массиве размером NxM элементов. Сначала в этом массиве расположена 0-я строка матрицы, затем 1-я и т.д. Поэтому для обращения к элементу A[i][j] необходимо, но номеру строки i и номеру столбца j

вычислить номер этого элемента k в динамическом массиве. Учитывая, что в массиве элементы нумеруются с нуля k=i.M+j. Обращение к элементу A[i][j] будет таким

*(A+i*m+j).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]