ВУЗ:
Составители:
Рубрика:
57
1.2. Формирование динамических массивов с использованием
операций new и delete
Для динамического распределения памяти используются
операции new и delete. Операция
new имя_типа
или
new имя_типа инициализатор
позволяет выделить и сделать доступны свободный участок
памяти, размеры которого соответствуют типу данных, опре-
деляемому именем типа. В выделенный участок заносится
значение определяемое инициализатором, который не являет-
ся обязательным параметром. В случае успешного выделения
памяти операция возвращает адрес начала выделенного уча-
стка памяти, если участок не может быть выделен, то воз-
вращается NULL.
Примеры:
1) int *i;
i=new int(10);
2) float *f;
f=new float;
3) int *mas=new[5];
В примерах 1, 2 показано как выделить память под скаляр-
ные переменные, пример 3 показывает выделение памяти под
массив переменных.
Операция delete указатель освобождает участок памяти
ранее выделенный операцией new.
Пример:
Функция для формирования двумерного динамического массива
int ** make_matr(int n)
{
int **matr;
int i,j;
matr=new int*[n];
for (i=0;i<n;i++)
{
matr[i]=new int[n];
for (j=0;j<n;j++)
matr[i][j]=random(10);
}
return matr;
}
При формировании матрицы сначала выделяется памяти
для массива указателей на одномерные массивы, а затем в
цикле с параметром выделяется память под n одномерных
массивов.
**matr
*matr[1] *matr[2] *matr[3] . . . . *matr[n]
57
1.2. Формирование динамических массивов с использованием
операций new и delete
Для динамического распределения памяти используются
операции new и delete. Операция
new имя_типа
или
new имя_типа инициализатор
позволяет выделить и сделать доступны свободный участок
памяти, размеры которого соответствуют типу данных, опре-
деляемому именем типа. В выделенный участок заносится
значение определяемое инициализатором, который не являет-
ся обязательным параметром. В случае успешного выделения
памяти операция возвращает адрес начала выделенного уча-
стка памяти, если участок не может быть выделен, то воз-
вращается NULL.
Примеры:
1) int *i;
i=new int(10);
2) float *f;
f=new float;
3) int *mas=new[5];
В примерах 1, 2 показано как выделить память под скаляр-
ные переменные, пример 3 показывает выделение памяти под
массив переменных.
Операция delete указатель освобождает участок памяти
ранее выделенный операцией new.
Пример:
Функция для формирования двумерного динамического массива
int ** make_matr(int n)
{
int **matr;
int i,j;
matr=new int*[n];
for (i=0;iСтраницы
- « первая
- ‹ предыдущая
- …
- 55
- 56
- 57
- 58
- 59
- …
- следующая ›
- последняя »
