{
int a[n], b[n]; // Объявление 2–х одномерных массивов
…
Если количество элементов массива определяется в процессе выполнения программы, используют динамическое выделение оперативной памяти компьютера.
1.2 Динамические массивы
Если до начала работы программы неизвестно, сколько в массиве элементов, в программе используют динамические массивы. Память под них выделяется с помощью оператора new во время выполнения программы. Адрес начала массива хранится в переменной, называемой указателем. Например.
int n;
puts(“Введите n”);
scanf(“%d”, &n);
int *a;
a = new int [n];
Здесь описан указатель a на целую величину, которому присваивается адрес начала непрерывной области динамической памяти, выделенной с помощью оператора new. Выделяется столько памяти, сколько необходимо для хранения n величин типа int. Величина n может быть переменной.
Примечание: Обнуление памяти при ее выделении не происходит. Инициализировать динамический массив нельзя.
Обращение к элементу динамического массива осуществляется также как и к элементам обычного массива. Например: a [0], a[1], …, a[9].
|
|
Можно обратиться к элементу массива другим способом: *(a+9), *(a+i), т.к. в переменной – указателе a хранится адрес начала массива. Для получения адреса, например, 9 – го его элемента к этому адресу прибавляется 9· sizeof(int) (9 умножить на·длину элемента типа int), т.е. к начальному адресу a прибавляется смещение 9. Затем с помощью операции * (разадресации) выполняется выборка значения из указанной области памяти.
После использования массива выделенная динамическая память освобождается с помощью оператора: delete [ ] имя массива. Например, для одномерного массива a:
delete [ ] a;
Время "жизни" динамического массива определяется с момента выделения динамической памяти до момента ее освобождения.
Алгоритмы обработки одномерных массивов