Динамические массивы
Динамические массивы создают с помощью операции new, при этом необходимо указать тип и размерность, например:
int п = 100;
float *р = new float [n];
В этой строке создается переменная-указатель на float, в динамической памяти отводится непрерывная область, достаточная для размещения 100 элементов вещественного типа, и адрес ее начала записывается в указатель р. Динамические массивы нельзя при создании инициализировать, и они не обнуляются.
Преимущество динамических массивов состоит в том, что размерность может быть переменной, то есть объем памяти, выделяемой под массив, определяется на этапе выполнения программы. Доступ к элементам динамического массива осуществляется точно так же, как к статическим, например, к элементу номер 5 приведенного выше массива можно обратиться как р[5] или *(р+5).
Альтернативный способ создания динамического массива – использование функции mallос библиотеки С:
int n = 100;
float *q = (float *) malloc(n * sizeof(float));
Операция преобразования типа, записанная перед обращением к функции mallос, требуется потому, что функция возвращает значение указателя типа void*, а инициализируется указатель на float.
Память, зарезервированная под динамический массив с помощью
new [], должна освобождаться оператором delete [], а память, выделенная функцией mallос – посредством функции free, например:
delete [] р; free (q);
При несоответствии способов выделения и освобождения памяти результат не определен. Размерность массива в операции delete не указывается, но квадратные скобки обязательны.
Дата добавления: 2015-10-09; просмотров: 907;