Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Динамический массив


Автор: ekha 24.11.2004, 17:01

Прошу прошения.
Скажите пожалуйста, как используется динамичекий массив? smile

Автор: dargaard 24.11.2004, 17:17
В динамическом массиве память не выделена во время компиляции, а выделяется во время исполнения програмы.

Например:
(Статический массив)
int main() {
int massiv[10];
}
будет выделена память под массив из 10 чисел.

(Динамический массив)
int main() {
int *massiv; //указатель на будуший массив

//какие нибудь действия чтоб установить сколько надо выделить
// например мы как то выяснили что размер массива N = 10
// В С
massiv = malloc(sizeof(int) * N);
// В С++
massiv = new int[10];

//Далее если массив больше не нужен, память можно удалить
// В С
free(massiv);

// В С++
delete [] massiv;
}

Следовательно динамический массив используется, когда
а) не известно количество элементов заранее
б) массив нужен только на короткое время

Автор: val 24.11.2004, 17:42
Используется обычно, когда заранее не знаешь длины требуемого массива.

Код

int main() {
 int* a;
 cin >> n;
 a = new int[n]; // Выделили память для массива длиной n.
 // Чего-то с ним делаем.
 delete [] a; // Очищаем память, выделенныю под этот массив.
}

Автор: Alastis 26.11.2004, 06:11
а еще почитай про vector из STL, очень удобная штука.

Автор: [ss]3L33T@ 27.11.2004, 06:03
ekha
Код

#include <stdio.h>
void main()
{
   float* mass=new float[5];//Заводим массив из 5 элементов.
   delete [] mass;//Удаление массива: очистка памяти бишь.
   mass=new float[20];//Отводим память для массива(т.е. создаём массив)
   mass[0]=2.4;//Устанавливаем значение элемента массива.
}

Ещё посмотри функцию realloc(). Она необходима для расширения массива без потери данных. Т.е., в данном примере я сначала завёл массив из 5 элементов, а потом другой - из 20 элементов, чтобы завести второй, мне нужно было осовободить память из-под первого, при этом все значение первого массива, есесно, были утеряны, а функция realloc() просто расширяет границы массива

Автор: !Жека! 27.11.2004, 08:12
Сначало необходимо выделить память под массив, потом идет работа с массивом как с обыкновенным. По окончании необходимо осободить выделенную память.

Пример.

int *arr = new int[n]; // выделяем память под n элементов, n - любое, может быть не константой

for (int i = 0; i < n; ++i)
arr[i] = i+10; // работаем с массивом

delete [] arr; // освобождаем память, обрати внимание на скобки [] если их забыть то ошибки не будет, но память полностью не освободится

Автор: chipset 27.11.2004, 16:24
Цитата(3L33T @ 26.11.2004, )
Ещё посмотри функцию realloc().

АФАИК старо-сишные функции обычно не принято употреблять в С++.

Автор: Гость_ekha 29.11.2004, 08:39

Сначала Всем спасибо за рекомендации.

Хочу подсчитать колличество цифры какой нибудь число.
помогите пожалуйста.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)