ВУЗ:
Составители:
Рубрика:
56
Но иногда бывает нужно чтобы память под массив выделялась
для решения конкретной задачи, причем ее размеры заранее
не известны и не могут быть фиксированы.
Формирование массивов с переменными размерами можно
организовать с помощью указателей и средств динамического
распределения памяти двумя способами:
1) с использованием библиотечных функций, описанных в за-
головочных файлах alloc.h и stdlib.h (стандартный Си);
2) с использованием операций new и delete (Си++).
1.1. Формирование динамических массивов с использованием
библиотечных функций
Для выделения и освобождения динамической памяти исполь-
зуются функции
Функция Прототип и краткое описание
malloc void * malloc(unsigned s)
Возвращает указатель на начало области
динамической памяти длиной в s байт, при
неудачном завершении возвращает NULL
calloc void * calloc(unsigned n, unsigned m)
Возвращает указатель на начало области
динамической памяти для размещения n эле-
ментов длиной по m байт каждый, при не-
удачном завершении возвращает NULL
realloc void * realloc(void * p, unsigned s)
Изменяет размер блока ранее выделенной
динамической памяти до размера s байт, р-
адрес начала изменяемого блока, при не-
удачном завершении возвращает NULL
free void *free(void p)
Освобождает ранее выделенный участок ди-
намической памяти, р – адрес первого бай-
та
Пример:
Функция для формирования одномерного динамического масси-
ва
int * make_mas(int n)
(
int *mas;
mas=(int*)malloc(n*sizeof(int));
for(int i=0;i<n;i++)
mas[i]=random(10);
return mas;
}
Для выделения памяти используется функция malloc,
параметром которой является размер выделяемого участка
памяти равный n*sizeof(int). Так как функция malloc воз-
вращает нетипизированный указатель void*, то необходимо
выполнить преобразование полученного нетипизированного
указателя в указатель int*.
Освободить выделенную память можно функцией
free(mas).
56
Но иногда бывает нужно чтобы память под массив выделялась
для решения конкретной задачи, причем ее размеры заранее
не известны и не могут быть фиксированы.
Формирование массивов с переменными размерами можно
организовать с помощью указателей и средств динамического
распределения памяти двумя способами:
1) с использованием библиотечных функций, описанных в за-
головочных файлах alloc.h и stdlib.h (стандартный Си);
2) с использованием операций new и delete (Си++).
1.1. Формирование динамических массивов с использованием
библиотечных функций
Для выделения и освобождения динамической памяти исполь-
зуются функции
Функция Прототип и краткое описание
malloc void * malloc(unsigned s)
Возвращает указатель на начало области
динамической памяти длиной в s байт, при
неудачном завершении возвращает NULL
calloc void * calloc(unsigned n, unsigned m)
Возвращает указатель на начало области
динамической памяти для размещения n эле-
ментов длиной по m байт каждый, при не-
удачном завершении возвращает NULL
realloc void * realloc(void * p, unsigned s)
Изменяет размер блока ранее выделенной
динамической памяти до размера s байт, р-
адрес начала изменяемого блока, при не-
удачном завершении возвращает NULL
free void *free(void p)
Освобождает ранее выделенный участок ди-
намической памяти, р – адрес первого бай-
та
Пример:
Функция для формирования одномерного динамического масси-
ва
int * make_mas(int n)
(
int *mas;
mas=(int*)malloc(n*sizeof(int));
for(int i=0;iСтраницы
- « первая
- ‹ предыдущая
- …
- 54
- 55
- 56
- 57
- 58
- …
- следующая ›
- последняя »
