Курсовая работа: Особливості мови програмування С

При звільненні пам'яті, займаної таким масивом, треба діяти в зворотному порядку, спочатку визволяючи рядки, а потім - сам одновимірний масив вказівників.

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

delete[] а[i];

delete[] а;

До елементів нашого двовимірного динамічного масиву можна звертатися звичайним способом: а[1][2].

Масив вказівників на масиви. Розподіл пам'яті.

По формулі (*) а[1][2]==*(*(a+1)+2). Але, на відміну від звичайного двовимірного масиву, а є покажчиком не на int[4], а на int*. Тому a+1 вказує на наступний елемент типа int* в одновимірному масиві а, тобто на а[1]. Нарешті, оскільки а[1] має типа int*, то а[1]+2 вказує на елемент а[1][2].

Відзначимо, що, на відміну від звичайного двовимірного масиву, рядки нашого динамічного масиву не обов'язково розташовуються в пам'яті послідовно. Саме завдяки цьому структура двовимірного динамічного масиву є надзвичайно гнучкою. Зокрема, для перестановки його рядків досить поміняти місцями покажчики в одновимірному масиві:

int* v=a[1]; а[1]=a[2]; а[2]=v;

Двовимірний динамічний масив дозволяє також зберігати рядки різної довжини. Наприклад, для створення нижнетреугольной матриці можна використовувати наступний фрагмент:

a=new int*[n];

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

а[i]=new int[i+1];

Одновимірний масив вказівників може також зберігати C-строки, відводячи під них стільки місця, скільки вони займають. Ініціалізація такого масиву при введенні рядків із стандартного потоку cin приводиться нижче:

char* s[10];

char buf[80];

for (int i=0; i<10; i++)

{

cin.getline(buf,80);

s[i]=new char(strlen(buf)+1);

strcpy(s[i],buf);

}

Відзначимо, що масив C-строк також відноситься до двовимірних динамічних масивів з рядками змінної довжини. Зокрема, в алгоритмі сортування при перестановці рядків потрібно міняти місцями лише вказівники [6].

2.1.1.9 Двовимірні масиви як параметри функції

Розглянемо простий випадок:

void print(int а[3][4])

{

for (int i=0; i<3; i++)

{

К-во Просмотров: 639
Бесплатно скачать Курсовая работа: Особливості мови програмування С