Выделение памяти под одномерный динамический массив
Для того чтобы выделить память под одномерный динамический массив в языке С++ существует 2 способа.
1) при помощи операции new, которая выделяет для размещения массива участок динамической памяти соответствующего размера и не позволяет инициализировать элементы массива.
Синтаксис:
ИмяМассива = new Тип [ВыражениеТипаКонстанты];
ИмяМассива – идентификатор массива, то есть имя указателя для выделяемого блока памяти.
Тип – тип указателя на массив.
ВыражениеТипаКонстанты – задает количество элементов (размерность) массива. Выражение константного типа вычисляется на этапе компиляции.
Например:
Int *mas;
mas = new int [100]; /*выделение динамической памяти
размером 100*sizeof(int) байтов*/
double *m = new double [n]; /*выделение динамической
памяти размером n*sizeof(double) байтов*/
long (*lm)[4];
lm = new long [2] [4]; /*выделение динамической памяти
размером 2*4*sizeof(long) байтов*/
При выделении динамической памяти размеры массива должны быть полностью определены.
2) при помощи библиотечной функции malloc (calloc), которая служит для выделения динамической памяти.
Синтаксис:
ИмяМассива = (Тип *) malloc(N*sizeof(Тип));
или
ИмяМассива = (Тип *) calloc(N, sizeof(Тип));
ИмяМассива – идентификатор массива, то есть имя указателя для выделяемого блока памяти.
Тип – тип указателя на массив.
N – количество элементов массива.
Например:
float *a;
a=(float *)malloc(10*sizeof(float));
// или
a=(float *)calloc(10,sizeof(float));
/*выделение динамической памяти размером 10*sizeof(float) байтов*/
Так как функция malloc (calloc) возвращает нетипизированный указатель void *, то необходимо выполнять преобразование полученного нетипизированного указатель в указатель объявленного типа.
Дата добавления: 2015-02-16; просмотров: 1056;