русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Динамические многомерные массивы


Дата добавления: 2013-12-23; просмотров: 983; Нарушение авторских прав


Инициализация многомерных массивов

Многомерные массивы

Многомерный массив – это массив массивов.

Пример определения:

int A[2][3];

Данное определение можно раскрыть следующим образом: А – массив из двух элементов, элементами массива являются массивы из трех элементов типа int.

Элементы следуют в памяти в следующем порядке:

A[0][0], A[0][1], A[0][2], A[1][0], A[1][1], A[1][2]

Обращаться к элементам массива можно с помощью индексного выражения или с помощью указателей

A[0][1]=5;

A[i][j]=i+j; // или

*(*(A+i)+j)=i+j;

Инициализация многомерных массивов может проводиться по аналогии с одномерными массивами. Например:

int A[2][3][2]={ 1, 2, 3, 4, 5};

Инициализируются первые 5 элементов по их расположению в оперативной памяти, т.е. элементы с индексами: 000, 001, 010, 011, 020

Но удобнее использовать вложенные фигурные скобки, при этом самая левая размерность может не указываться, а определяться по умолчанию:

int B[][5]={{ 1, 2, 3} , { 6, 7} , { 1, 2, 3, 4, 5 }};

В примере создается массив размерности 3 × 5 (аналог матрицы 3 × 5, при этом в первой строке инициализируются 3 элемента, во второй – 2 элемента, в третьей – все 5 элементов).

 

По аналогии с одномерными массивами многомерные массивы могут создаваться динамически. Рассмотрим пример создания двухмерного массива n × m (матрица n × m), при этом значения n и m заранее неизвестны – вводятся с клавиатуры. В примере создается матрица n × m, заполняется случайными числами, выводится на печать, в конце программы память освобождается.

#include <stdio.h>

#include <stdlib.h>

void main()

{

int **p; // Указатель на указатель может быть использован для выделения памяти под

// 2-х мерный массив динамически



int n, m; // Заранее неизвестные размерности массива

int i, j; // Индексные переменные

printf("n="); scanf("%d", &n); // Ввод с клавиатуры числа строк матрицы

printf("m="); scanf("%d", &m); // Ввод с клавиатуры числа столбцов матрицы

p=malloc(n*sizeof(int *)); // Выделяем память под массив указателей

// Выделяем память для каждого указателя в массиве указателей

for(i=0; i<n; i++) p[i]=malloc(m*sizeof(int));

// Заполняем массив (матрицу) случайными числами и печатаем его

for(i=0; i<n; i++)

{

for(j=0; j<m; j++)

{

p[i][j]=rand() % 100; // Получаем псевдослучайное целое число

printf("%d ", p[i][j]);

}

printf("\n"); // После печать строки матрицы переход на новую строчку

}

// Освобождаем память, порядок освобождения обратен порядку выделения

for(i=0; i<n; i++) free(p[i]); // Освобождаем память для строк матрицы

free(p);// освобождаем память для массива указателей

}

 



<== предыдущая лекция | следующая лекция ==>
Динамические массивы | Термины


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.