// Число элементов массива определяется по числу инициализаторов
int d[2][3] = {{0, 1, 2},{3, 4, 5}};
// Инициализация двумерного массива. Массив состоит из двух строк, // в каждой из которых по 3 элемента. Элементы первой строки // получают значения 0, 1 и 2, а второй – значения 3, 4 и 5.
int e[3] = {0, 1, 2, 3};
// Ошибка – число инициализаторов больше числа элементов
1.3. Работа с массивами
1.3.1. Доступ к элементу массива
Для доступа к конкретному элементу массива используются индексные выражения:
<имя массива>[<целочисленное выражение>].
Квадратные скобки являются требованием синтаксисам языка, а не признаком необязательности конструкции.
Индекс массива может быть не только константой, но и выражением, которое имеет целочисленный тип, например, a[i+1] (здесь a должно быть именем ранее объявленного массива, а i– переменной целого типа).
Объявление массива и индексное выражение, используемое для доступа к элементу массива, имеют схожий синтаксис. Различаются они по месту в программе. Это особенно важно, когда мы определяем индекс последнего элемента массива. Как было сказано ранее, индексы элементов массива в языке C начинаются с 0, и номер последнего элемента на 1 меньше количества элементов массива. Поэтому если Вы объявили массив x из 10 элементов, Вы не можете написать индексное выражение x[10], т.к. в этом случае Вы пытаетесь обратиться к элементу с индексом 10, которого нет в Вашем массиве. Компилятор не выдаст сообщения об ошибке, но результаты работы такой программы будут непредсказуемы.
1.3.2. Обработка массивов
Для обработки элементов массива обычно используется оператор пошагового цикла for.
for (i = 0;
// Присваиваем счетчику цикла значение индекса первого элемента
i < n;
// Условие продолжения цикла – пока значение счетчика меньше количества элементов массива
i++)
// Увеличиваем счетчик цикла на 1 для перехода к следующему элементу массива
<тело цикла>
// В теле цикла происходит обработка одного элемента массива
Для обработки многомерного массива используется соответствующее количество циклов.
Массивы не самодостаточны в том смысле, что не гарантируется хранение информации о количестве элементов вместе с самим массивом. В большинстве реализаций С++ отсутствует проверка диапазона индексов для массивов (традиционный низкоуровневый подход к обработке массивов). Более совершенное понятие массива можно реализовать при помощи классов.
1.3.3. Ввод/вывод массивов
В языке C нет возможности вводить и выводить весь массив одним оператором ввода/вывода. Можно вводить и выводить только один элемент массива.
Пример.
int a[10], n;
printf("n=");
scanf("%d", &n);
if (n<0 || n>9) {
printf("Количество элементов массива должно быть от 0 до 9!\n");
return;
}
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for (i = 0; i < n; i++)
printf("a[%d] = %3d\n", i + 1, a[i]);
// Объявляем массив и переменную для количества элементов массива
// Ввод количества элементов массива
// Если входные данные неверны, // то печатаем соответствующее сообщение и выходим из программы
// Ввод массива по одному элементу
// Вывод массива на экран