Similar presentations:
Динамические массивы и примеры на С++ для АСУб и ЭВМб. Тема 5-2
1.
Тема 5-2.Динамические массивы и
примеры на С++
для АСУб и ЭВМб
2.
Динамическиемассивы
• Кроме отдельных динамических объектов в языке C++
могут быть использованы динамические массивы.
• Для выделения памяти под динамический массив также
используется оператор new, после которого в
квадратных скобках указывается, сколько массив
будет содержать переменных:
int *numbers = new int[4]; // динамический массив из 4
чисел
3.
ДинамическиеМожно инициализировать
массивымассив значениями:
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. Динамическая матрица
Указатель науказатель
Одномерные массивы
определенного типа
matrix
…
Массив указателей
7. Динамические массивы
Пример. Единичная матрица с изменяемым порядком.int n;
cin >> n;
double **matr; //Указатель для массива указателей
matr = new double *[n]; //Массив указателей double *
for(int i = 0; i<n; i++){
matr[i] = new double[n];
for(int j = 0; j<n; j++)
matr[i][j] = (i != j ? 0 : 1);
}
cout << "Result:\n";
for(int i = 0; i<n; i++){
for(int j = 0; j<n; j++)
cout << '\t' << matr[i][j];
cout << endl;
}
for(int i = 0; i < n; i++)
delete [] matr[i];
delete [] matr;
return 0;
Элементы типа
double *
Элементы типа
double
7
8. Динамическая матрица
matrix…