Динамические массивы и примеры на С++ для АСУб и ЭВМб. Тема 5-2

Слайд 2

Динамические массивы Кроме отдельных динамических объектов в языке C++ могут быть

Динамические массивы

Кроме отдельных динамических объектов в языке C++ могут быть использованы

динамические массивы.
Для выделения памяти под динамический массив также используется оператор new, после которого в квадратных скобках указывается, сколько массив будет содержать переменных:
int *numbers = new int[4]; // динамический массив из 4 чисел
Слайд 3

Динамические массивы Можно инициализировать массив значениями: int *n1 = new int[4];

Динамические массивы

Можно инициализировать массив значениями:
int *n1 = new int[4]; //

каждый элемент имеет неопределенное значение
int *n2 = new int[4](); // каждый элемент имеет значение по умолчанию - 0
int *n3 = new int[4]{ 1, 2, 3, 4 }; // массив состоит из чисел 1, 2, 3, 4
При инициализации массива конкретными значениями следует учитывать, что если значений в фигурных скобках больше чем длина массива, то оператор new потерпит неудачу и не сможет создать массив.
Если переданных значений, наоборот, меньше, то элементы, для которых не предоставлены значения, инициализируются значением по умолчанию.
Слайд 4

Динамические массивы После создания динамического массива мы сможем с ним работать

Динамические массивы

После создания динамического массива мы сможем с ним работать по

полученному указателю, получать и изменять его элементы:
int n = 5; // размер массива
int *p = new int[n]{ 1, 2, 3, 4, 5 };
for (int *q = p; q != p + n; q++)
{
std::cout << *q << "\t";
}
Слайд 5

Динамические массивы Для удаления динамического массива и освобождения его памяти применяется

Динамические массивы

Для удаления динамического массива и освобождения его памяти применяется специальная

форма оператора delete:
delete [] указатель_на_динамический_массив;
Слайд 6

Динамическая матрица Указатель на указатель Массив указателей Одномерные массивы определенного типа

Динамическая матрица

Указатель на указатель

Массив указателей

Одномерные массивы определенного типа

Слайд 7

Динамические массивы Пример. Единичная матрица с изменяемым порядком. int n; cin

Динамические массивы

Пример. Единичная матрица с изменяемым порядком.
int n;
cin >>

n;
double **matr; //Указатель для массива указателей
matr = new double *[n]; //Массив указателей double *
for(int i = 0; i matr[i] = new double[n];
for(int j = 0; j matr[i][j] = (i != j ? 0 : 1);
}
cout << "Result:\n";
for(int i = 0; i for(int j = 0; j cout << '\t' << matr[i][j];
cout << endl;
}
for(int i = 0; i < n; i++)
delete [] matr[i];
delete [] matr;
return 0;

Элементы типа
double *

Элементы типа
double