Лекции по проге / 7_Многомерные массивы
.pdf
Примеры обращения к двумерному массиву
//Обращение к строке массива,
//результат — одномерный массив battlefield[2]
battlefield |
0 |
1 |
2 |
|
|
0 |
|
0 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
1 |
0 |
-1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
-1 |
1 |
-1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Обращение к элементу массива,
//результат — целое число battlefield[1][2]
21
battlefield |
0 |
1 |
2 |
|
|
0 |
0 |
1 |
|
1 |
|
|
|
|
|
|
|
1 |
1 |
0 |
|
-1 |
|
2 |
-1 |
1 |
|
|
|
|
-1 |
|
|||
|
|
|
|
|
|
Задание
Поставьте в середину игрового поля нолик
Заполните последнюю строку игрового поля крестиками. Для заполнения используйте функцию
memset( char mass[], |
// массив |
char c, |
// заполнитель |
int count ) |
// кол-во элементов |
|
// для заполнения |
22
Примеры модификации двумерного массива
//Помещаем в середину игрового поля нолик battlefield[1][1] = 0;
//Заполняем последнюю строку игрового
//поля крестиками
memset(battlefield[2], 1, 3);
battlefield |
0 |
1 |
2 |
|
battlefield 0 1 2 |
3 4 5 |
|
6 7 8 |
|
||||||||
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
0 |
1 |
1 |
-1 |
0 |
1 |
|
1 |
1 |
1 |
|
|
|
|
|
|
|
||||||||||||
0 |
|
0 |
1 |
1 |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
-1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
1 |
1 |
1 |
|
подмассив |
|
||||||||||
|
|
|
|
|
|
|
|||||||||||
23
Задание
Заполните последний столбец игрового поля ноликами
24
Примеры модификации двумерного массива
//Обращение к последнему столбцу поля
//невозможно!!! - синтаксическая ошибка!!! memset(battlefield[][2], 0, 3);
//Поэлементное заполнение столбца
|
for(int i = 0; i < 3; i++) |
// i — индекс строки |
||||||||||||
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
battlefield[i][2] = 0; |
|
|
|
|
|
|
|
|
|
||||
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
battlefield |
|
|
2 battlefield |
|
|
|
|
|
|
|
||||
0 |
1 |
0 1 2 |
3 4 5 |
6 7 8 |
||||||||||
|
0 |
0 |
1 |
0 |
|
0 |
1 |
0 |
1 |
0 |
0 |
-1 |
1 |
0 |
|
1 |
1 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
25 |
2 |
-1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
Это надо помнить!
●Многомерный массив можно рассматривать как массив подмассивов
●Подмассив можно получить, указав часть индексов в многомерном массиве
26
Ошибки при компиляции для VS 2008 Russian
●для индекса требуется массив или указатель —
количество квадратных скобок при обращении к элементу массива слишком велико (указано больше индексов, чем измерений в массиве)
●=: невозможно преобразовать <тип> в '<тип>[<размер>]' — количество квадратных скобок при обращении к элементу массива слишком мало (указано меньше индексов, чем необходимо)
27
Ошибки при компиляции для VS 2005 English
●subscript requires array or pointer type —
количество квадратных скобок при обращении к элементу массива слишком велико (указано больше индексов, чем измерений в массиве)
●cannot convert from '<тип>' to '<тип>[<размер>]' количество квадратных скобок при обращении к элементу массива слишком мало (указано меньше индексов, чем необходимо)
28
