- •1.1.Схема простой программы
- •1.2.Основы записи программ
- •1.2.1.Имена
- •1.2.2.Комментарии
- •1.2.3.Переменные и константы, объявления и присваивания
- •1.3.Основные конструкции: операторы, выражения, операции, операнды
- •2.1.Операторы объявления
- •2.2.“Линейные” операторы
- •2.3.Операторы управления программой
- •2.3.1.Условный оператор if (if-else)
- •2.3.2.Оператор выбора switch
- •2.3.3.Оператор цикла while
- •2.3.4.Оператор цикла do–while
- •2.3.5.Оператор цикла for
- •2.3.6.Операторы перехода break, continue и goto
- •3.1.Операция присваивания
- •3.2.Объединение действий с присваиванием
- •3.3.Операции увеличения и уменьшения на 1
- •3.4.Трактовка истинности
- •3.5.Операция ?
- •3.6.Операция «запятая»
- •3.7.Операция sizeof
- •4.1.Объявление, определение, параметры и вызов функции
- •4.2.Выход из функции
- •4.3.Организация памяти при выполнении программы
- •4.4.Правила видимости имен для функций
- •4.5.Одинаковое именование нескольких функций (перегрузка функций)
- •4.6.Параметры функций по умолчанию
- •4.7.Передача параметров функции по адресу
- •4.8.Библиотека стандартных функций
- •6.1.Целые числа
- •6.2.Вещественные числа
- •6.3.Логические значения
- •6.4.Символы
- •6.5.Преобразование типов
- •6.6.Вычисление значения выражения
- •7.1.Массивы
- •7.1.1.Одномерные массивы
- •7.1.2.Многомерные массивы
- •7.1.3.Строки
- •7.1.4.Массивы с неопределенным размером (безразмерные массивы)
- •7.2.Перечисления
7.1.2.Многомерные массивы
Имеется возможность определить массивы с несколькими индексами (измерениями).
Математический “аналог” двумерных массивов – матрицы, состоящие из строк и столбцов. Например, объявление
int m[10][5];
объявляет матрицу (таблицу) целых чисел размером 10 на 5, то есть из 10 строк и 5 столбцов. По-другому интерпретировать данное объявление можно как объявление массива из 10 элементов, каждый из которых – одномерный массив (вектор) целых чисел длиной 5. Общее количество целых чисел в массиве m равно 50.
Обращение к элементам двумерных массивов осуществляется с указанием значений двух индексов. Так, оператор
m[1][2]=0;
присваивает значение 0 третьему элементу второй строки матрицы m.
Как и при объявлении одномерного массива, при объявлении многомерного массива все его размеры должны быть заданы константами.
Двумерные массивы запоминаются в памяти построчно, без промежутков между элементами. Вообще же многомерные массивы запоминаются в памяти таким образом, что, если переходить элемента к элементу последовательно, последний индекс изменяется быстрее, а первый – медленнее всех.
При инициализации многомерных массивов список значений для каждой размерности может быть заключен в фигурные скобки:
double temp[2][3] = {
{ 3.2, 3.3, 3.4},
{ 4.1, 3.9, 3.9} };
Начальные значения для двумерных массивов могут быть и не “структурированными”, а задаваться общим списком, как для одномерных массивов. В этом случае инициализация производится по строкам (быстрее растет последний индекс).
При использовании “структурированного” списка начальных значений недостающие элементы строк заменяются нулями.
Количество измерений в массиве может быть достаточно большим, хотя на практике массивы, имеющие больше трех измерений, используются нечасто.
7.1.3.Строки
В языке C++ не существует особого встроенного типа данных для работы с текстом,. Текст представляется в виде последовательности символов (байтов), заканчивающихся нулевым символом (нуль-символом) '\0', представляющим нулевое числовое значение. Иногда такое представление называют C-строками, поскольку оно появилось в языке C.
C-строки представляются в виде одномерного массива символов, например:
char str[20];
Для записи строковых констант (литералов) в программе используются последовательности символов, заключенные в двойные кавычки:
"This is a string"
"0123456789"
"*"
Строка, как и любой другой массив, может быть инициализирована поэлементно. Например, чтобы записать в str строковое значение "Hello!", можно выполнить соответствующее число присваиваний (не забыв о завершающем нуль-символе), циклически ввести необходимые символы с клавиатуры или использовать список начальных значений. В результате указанных действий в массиве string будет записана строка "Hello!", при этом фактически будет использоваться только 7 из 20 элементов массива.
Однако для строк возможна и более короткая форма записи инициализации:
char string[20]="Hello!";
вывода текущего значения строки:
cout << str;
а также ввода новых строковых значений:
cin >> str;
(последний способ позволяет ввести только однострочное строковое значение, не содержащее пробелов и табуляций).
При указании размера массива символов следует помнить, что он должен быть на 1 больше, чем число символов в строке, чтобы предусмотреть место для нуль-символа.