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