Массив может быть многомерным. Двумерные массивы обычно используются для представления матриц, координат и шахматных досок. Для объявления многомерного массива необходимо задать несколько размеров, заключенных в квадратные скобки.
Примеры объявления многомерного массива.
1) double b[34][20];
// Двумерный массив элементов типа double, состоящий из 34 строк и 20 столбцов, первый элемент b[0][0]
2) int a[3][10][21]; // Трехмерный массив элементов типа int, первый элемент
// a[0][0][0]
Многомерный массив также можно инициализировать одновременно с объявлением. При этом надо учитывать, что двумерные массивы (матрицы) запоминаются в памяти построчно, а многомерные запоминаются таким образом, что, если переходить от элемента к элементу, последовательно, то последний индекс изменяется быстрее всего.
Примеры инициализации многомерных массивов.
int a[5][3] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; //a[0][0]=1, a[0][1]=2, a[0][3]=3
int a[5][3]={{1,2,3}, // Чтобы не запутаться в числах,
{4,5,6}, // лучше сгруппировать данные по
{7,8,9}, // строкам
{10,11,12}
{13,14,15}};
|
|
Занятие 4. Указатели и массивы.
Внимание! Вначале занятия потоковая контрольная! Повторите пройденный материал! Удачи на контрольной!
Теоретическая часть
Указатели и одномерные массивы
В языке С++ указатели и массивы тесно связаны друг с другом. Имя массива соответствует адресу его первого элемента. Поэтому можно присвоить указателю адрес первого элемента, используя просто имя массива:
int iarray[10];
int *pi;
pi=iarray; // Это то же самое, что pi=&iarray[0];
При определении массива ему выделяется память. Но как только память выделена, имя массива воспринимается как константный указатель (его значение нельзя изменить) того типа, к которому отнесены элементы массива. Для любого массива соблюдается равенство:
имя_массива = &имя массива = &имя_массива[0]
Элементы массива хранятся в памяти последовательно друг за друга. Вспомним, что к указателю можно применять операцию +, которая позволяет получить доступ к следующей ячейке памяти. Доступ к i-му элементу массива будет выглядеть следующим образом *(имя_массива + i). Таким образом, можно получить доступ ко всем элементам массива:
#include <stdio.h>
void main()
{
float mass[4];
for (int i = 0; i<4; i++)
{
*(mass+i) = i + 1;
printf("%2.1f\t", *(mass+i));
}
printf("\n");
}
Отметим, что при работе с массивами код mass[i] компилятор автоматически заменяет на *(mass+i).