ПредишенСледващото

Работа с двумерни масиви

Пример динамична памет

В следващия пример, динамичният паметта се използва за съхранение елементи масив предварително неопределен размер, чийто вход е спряно, когато номер на входния сигнал е по-голяма от или равна 1e300. В този случай, най-напред масив разпределени сегмент памет с максимален размер, а след това на размера на блока памет е зададено, съответстващ на действителния размер на масива.

нищожен * изчистване (размер size_t)

невалидни * р = изчистване (размер);

нищожен * презаделяне (нищожен * блок, size_t размер)

невалидни * р = презаделяне (блок, размер);

неподписан и п maxN, goodIO;

А = (двойна *) изчистване (maxN = UINT_MAX);

за (goodIO = п = 0; п

ФОРМАТ ( "А = [.]", п); scanf ( "% LF" температура);

А = (двойна *) презаделяне (А, п * sizeof (двойно));

/ * Array обработка. Например - печат. * /

за (I = 0; и

ФОРМАТ ( "% 10.3lf", А [Ь]);

ако ((I + 6) 5% == 0) ФОРМАТ ( "\ п");

Максималният размер на сегмент в байтове винаги е най-голямата стойност на цяло число без знак, чиято стойност се определя UINT_MAX постоянно в заглавната част на файла .

Програмата използва спомагателната изчистване () и презаделяне () за наблюдение на разпределение на паметта. Те служат и излизане () с прототипа във файла Тя се използва за прекъсване на програмата.

Когато се използва динамичен двумерен масив, има някои трудности, свързани с факта, че в C не съществуват вградени инструменти за отчитане на дължината на низ по време на индексиране. Ето защо, програмистът трябва да предоставят възможност за индексиране двумерен масив. Освен това, трябва да има възможност да се коригира функцията за предаване в динамична масив. Следващите секции в примерната програма, пълна с произволни стойности на правоъгълна матрица, смятат различни подходи при решаването на този проблем.

В следващия пример, двуизмерен масив е представена като едномерен и двумерен местоположение на всеки елемент в едномерен масив определя от сумата на броя колона и брой ред работа низ дължина. Метод за индексиране по същия повикващия и callee.

# определят MAXVAL 1000

невалидни * изчистване (размер size_t);

анулира RandomMatr (двойна * Matr, Int п, Int л);

анулира OutMatr (Чар име *,

двойно * Matr, Int п, Int т);

Свързани статии

Подкрепете проекта - споделете линка, благодаря!