- •Указатели
- •Типы указателей. Объявление указателей.
- •1.1.1. Указатель данных
- •1.1.2. Указатель функции
- •Операции с указателями
- •Тема № 8. Указатели и массивы в языке с.
- •Инициализация массивов
- •Объявление массива
- •Одномерные (линейные) массивы
- •Многомерные массивы
- •Работа с массивами
- •Доступ к элементу массива
- •Обработка массивов
- •Ввод/вывод массивов
- •Примеры программ обработки массивов
- •4.10. Указатели
Объявление массива
Одномерные (линейные) массивы
Объявление массива имеет следующий синтаксис:
<спецификация типа> <имя> [<константное выражение>];
<спецификация типа> <имя> [ ];
Квадратные скобки являются элементом синтаксиса, а не признаком необязательности конструкции.
Объявление массива может иметь одну из двух синтаксических форм, указанных выше. Квадратные скобки, следующие за именем, – признак того, что переменная является массивом. Константное выражение, заключенное в квадратные скобки определяет число элементов в массиве.
В C++ нельзя определять произвольные диапазоны для индексов. Индексация элементов массива в языке C++ начинается с нуля, последний элемент массива имеет индекс на единицу меньше, чем число элементов массива.
Во второй синтаксической форме константное выражение в квадратных скобках опущено. Эта форма может быть использована в следующих случаях:
если в объявлении массива присутствует инициализатор;
массив объявляется как формальный параметр функции;
данное объявление является ссылкой на объявление массива где-то в другом месте программы.
Многомерные массивы
Многомерный (N-мерный) массив, или массив массивов, объявляется путем задания последовательности константных выражений в квадратных скобках, следующей за именем:
<тип> <имя> [<константное выражение_1>] [<константное выражение_2>] ... [<константное выражение_N>];
Каждое константное выражение определяет количество элементов в соответствующем измерении массива.
Для многомерного массива может быть опущена только первая размерность.
Примеры объявлений массивов
int x[10]; |
// Одномерный массив из 10 целых чисел. // Индексы меняются от 0 до 9. |
double y[2][10]; |
/* Двумерный массив вещественных чисел из 2 строк и 10 столбцов.*/ |
Инициализация массивов
Как и простые переменные, массивы могут быть инициализированы при объявлении.
Инициализатор для объектов составных типов (каким является массив) состоит из списка инициализаторов, разделенных запятыми и заключенных в фигурные скобки. Каждый инициализатор в списке представляет собой константу соответствующего типа или список инициализаторов (при инициализации многомерных массивов).
Наличие списка инициализаторов в объявлении массива позволяет не указывать число элементов по его первой размерности. В этом случае количество элементов в списке инициализаторов и определяет число элементов по первой размерности массива. Тем самым определяется размер памяти, необходимой для хранения массива. Число элементов по остальным размерностям массива, кроме первой, указывать обязательно.
Если в списке инициализаторов меньше элементов, чем в массиве, то оставшиеся элементы неявно инициализируются нулевыми значениями.
Если же число инициализаторов больше, чем требуется, то выдается сообщение об ошибке.
Примеры инициализации массивов
int a[3] = {0, 1, 2}; |
// Число инициализаторов равно числу элементов |
double b[5] = {0.1, 0.2, 0.3}; |
// Число инициализаторов меньше числа элементов |
int c[ ] = {1, 2, 4, 8, 16}; |
// Число элементов массива определяется по числу инициализаторов |
int d[2][3] = {{0, 1, 2},{3, 4, 5}}; |
// Инициализация двумерного массива. Массив состоит из двух строк, // в каждой из которых по 3 элемента. Элементы первой строки // получают значения 0, 1 и 2, а второй – значения 3, 4 и 5. |
int e[3] = {0, 1, 2, 3}; |
// Ошибка – число инициализаторов больше числа элементов |
