- •МАССИВЫ
- •Массивы
- •МАССИВЫ.
- •МАССИВЫ.
- •Инициализация
- •Если элементов в массиве больше, чем
- •Размерность
- •Если при описании массива не ука
- •Для доступа к элементу массива
- •При обращении к элементам массива автоматический контроль выхода индекса за границу массива не
- •Пример:
- •Размерность массива
- •Динамические
- •Динамические массивы нельзя инициализировать при создании, и они не обнуляются!!!
- •Пример:
- •Доступ к элементам динамического массива
- •Альтернативный способ создания динамического
- •Динамические массивы
- •Многомерные
- •Пример:
- •Многомерные массивы
- •При инициализации многомерного массива он представляется
- •Динамические многомерные массивы
- •Более универсальный и безопасный способ выделения памяти под двумерный массив, когда обе его
- •Процессы, происходящие в памяти при выполнении
- •Освобождение памяти из-под
- •Указатель на константу удалить нельзя!!!
- •Для правильной интерпретации
- •Строки
- •СТРОКИ.
- •Строку можно инициализировать
- •Знак равенства перед строковым литералом означает инициализацию,
- •Операция присваивания одной строки другой не определена и
- •Пример :
- •При работе со строками часто используются указатели
- •Более эффективным будет использовать проверку на нуль-символ
- •В приведенном примере, результат операции присваивания —
- •Оба способа работы со строками
- •Распространенные ошибки при работе
- •Строки string не обязательно должны
Пример:
int matr [6][8];
Многомерные массивы |
21 |
Многомерные массивы |
22 |
При инициализации многомерного массива он представляется |
: |
либо как массив из массивов, при этом каждый массив заключает
Примеры:
int mass2[][2] ={{1, 1},{0. 2},{1, 0}}; int mass2[3][2] = {1, 1, 0, 2, 1, 0};
М А С С И В Ы |
23 |
Динамические многомерные массивы |
Для создания динамического многомерного массива необходимо указать в операции new все его размерности
самая левая размерность может быть переменной
Пример:
int nstr = 5;
int ** m = (int **) new int [nstr][10];
Динамические многомерные массивы 24
Более универсальный и безопасный способ выделения памяти под двумерный массив, когда обе его размерности задаются на этапе выполнения программы, приведен ниже:
int nstr; nstb;
cout << " Введите количество строк и столбцов :"; cin >> nstr >> nstb;
int **a = new int *[nstr]; |
// 1 |
|
for(int i = 0; i<nstr; |
i++) |
// 2 |
a[i] = new int [nstb]; |
// 3 |
|
1
Динамические многомерные массивы |
25 |
Процессы, происходящие в памяти при выполнении |
|||
предыдущего |
фрагмента |
программы |
можно |
проиллюстрировать следующей схемой: |
|
Динамические многомерные массивы |
26 |
Освобождение памяти из-под |
массива с любым количеством |
измерений выполняется с |
помощью операции delete []. |
Динамические многомерные массивы27 |
Указатель на константу удалить нельзя!!!
28
Для правильной интерпретации |
объявлений полезно запомнить |
мнемоническое правило: |
«суффикс привязан крепче |
префикса». |
Если при описании переменной используются одновременно префикс |
Обратите внимание
29
Строки
30