Главная » Статьи » Програмування » C [ Добавить статью ]

RUS Уроки по программированию на языке С (Примеры на многомерные динамические массивы.)

Примеры на многомерные динамические массивы.

Пример 1. Организация двумерного "треугольного" динамического массива.

Сначала создаётся одномерный массив указателей, а затем каждому элементу этого массива присваивается адрес одномерного массива. При этом размер (количество элементов) каждого нового массива на единицу меньше размера предыдущего. Включённая в квадратные скобки переменная, которая является операндом операции new, позволяет легко сделать это.

#include <iostream>
using namespace std;

void main()
{
 int i, j;

 // Переменные для описания характеристик массивов.
 int m1 = 5, wm = 5;
 int **pXArr = new int*[m1];

 for (i = 0; i < m1; i++, wm--) 
 pXArr[i] = new int[m1];

 
 //Заполнение массива нулями и показ его на экран
 for (i = m1 - 1; i >= 0; i--, wm++) {
 for (j = 0; j < wm; j++){
 pXArr[i][j]=0;
 cout<<pXArr[i][j]<<"\t";
 }
 cout<<"\n\n";
 }

 //Последовательное уничтожение двумерного массива треугольной конфигурации…

 for (i = 0; i < m1; i++) 
 delete[]pXArr[i];
 delete[]pXArr;
}

Пример 2. Организация трехмерного динамического массива.

Создание и уничтожение трёхмерного массива требует дополнительной итерации. Однако здесь также нет ничего принципиально нового.

 #include <iostream>
using namespace std;

void main()
{
 int i, j;

 // Переменные для описания характеристик массивов.
 int m1 = 5, m2 = 5, m3 = 2;
 
 // указатель на указатель на указатель :)
 int ***ppArr;

 // Создание массива
 ppArr = new int**[m1];
 for (i = 0; i <m1; i++) 
 ppArr[i] = new int*[m2];

 for (i = 0; i < m1; i++)
 for (j = 0; j < m2; j++) 
 ppArr[i][j] = new int[m3];
 
 ppArr[1][2][3] = 750; 
 cout << ppArr[1][2][3] << "\n"; 

 // Удаление в последовательности, обратной созданию
 for (i = 0; i < m1; i++)
 for (j = 0; j < m2; j++) 
 delete[]ppArr[i][j];

 for (i = 0; i < m1; i++) 
 delete[]ppArr[i];
 delete[] ppArr;
}


Категория: C | Добавил: DEN-SHP (05.11.2012)
Просмотров: 782 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]