Динамические массивы. Память для массива может выделяться и уничтожаться динамически с помощью специальных функций, например
Память для массива может выделяться и уничтожаться динамически с помощью специальных функций, например, для выделения памяти могут использоваться функции: malloc, calloc, realloc, а для освобождения памяти функция free (в Си++ существуют специальные операторы new и delete). Особенно это удобно в том случае, когда число элементов заранее не известно, а становится известным только во время выполнения программы, например, число элементов может вычисляться при работе программы, вводится с клавиатуры и т.д.
Функция malloc имеет заголовок, определенный в заголовочном файле stdlib.h:
void * malloc(unsigned int _Size);
Данная форма заголовка является упрощенной, функция имеет один параметр, определяющий размер выделяемой динамически области памяти в байтах, функция возвращает указатель на выделяемую область памяти, тип указателя void *, что обеспечивает его неявное приведение к указателям на любые стандартные типы.
Возвращает выделенную память обратно операционной системе функция с упрощенным заголовком (заголовочный файл stdlib.h):
void free(void * _Memory);
Функция имеет один параметр – указатель на блок освобождаемой памяти.
Ниже представлен пример выделения памяти под массив, размерность которого вводится с клавиатуры, далее массив заполняется случайными числами, выводится на печать, в конце работы программы выделенная память освобождается.
#include <stdio.h>
#include <stdlib.h>
void main()
{
int *p; // Указатель, может быть использован для выделения памяти под массив динамически
int n; // Заранее неизвестное число элементов массива
int i; // Индексная переменная
printf("n="); scanf("%d", &n); // Ввод с клавиатуры числа элементов массива
p=malloc(n*sizeof(int)); // Выделяем память под массив динамически
// Заполняем массив случайными числами и печатаем его
for(i=0; i<n; i++)
{
p[i]=rand() % 100; // Получаем псевдослучайное целое число в интервале
// 0..99
printf("%d ", p[i]);
}
free(p); // Возвращаем выделенную память операционной системе, когда она не нужна
}
Дата добавления: 2015-08-14; просмотров: 725;