- •Введение
- •Структура программы на языке Си
- •Директивы препроцессора
- •Константы
- •Переменные
- •Арифметические выражения
- •Операция присваивания
- •Ввод информации с клавиатуры и вывод на экран
- •Логические выражения
- •Операторы управления
- •Оператор условного перехода if
- •Оператор выбора варианта
- •Перечисляемый тип данных
- •Циклы
- •Оператор цикла while
- •Оператор цикла do-while
- •Оператор цикла for
- •Локальные и глобальные переменные
- •Переменные с индексами (массивы)
- •Примеры обработки одномерных массивов
- •Многомерные массивы
- •Массивы и указатели
- •Арифметические и логические операции с указателями
- •Обработка массивов с помощью указателей
- •Обработка массивов переменной размерности
- •Обработка матриц переменной размерности
- •Обработка текстовой информации
- •Стандартные строки языка С++
- •Пример 1. Определение длины строки.
- •Пример 2. Копирование одной строки в другую
- •Пример 3. Исключение из строки символа.
- •Пример 4. Вставка в строку символа
- •Пример 5. Проверка правильности расстановки скобок.
- •Строки типа string
- •Массивы указателей
- •Указатели на функции
- •Сводная таблица форм объявления указателей
- •Преобразование типов
- •Ссылки
- •Структуры
- •Объединения
- •Файлы
- •Чтение файла в матрицу
- •Чтение файла в структуру
- •Функции для обработки произвольных полей структур
- •Связные списки
- •Контейнерные классы
- •Стеки
- •Рекурсия
- •Вопросы для самопроверки
- •Литература
131
равнивания, возможно, в памяти будут оставлены "пустые" места, а это значит, что фактический объем памяти, выделенный для размещения структуры, может не совпадать с рассчитанным вручную. Точный объем памяти, требуемый для размещения структуры, определяет операция sizeof, которой и рекомендуется пользоваться для этих целей.
Рабочий указатель может быть настроен на адрес структуры, память для которой выделена. Например, пусть product объявленный выше тип структуры.
product shop1, *ptr;
Тогда оператор ptr = &shop1;
позволяет для указателя ptr получить адрес структуры, память для которой выделена при объявлении переменной типа структуры shop1. Общее правило заключается в том, что переменные типа структуры, рассматриваемые в целом, обрабатываются в программах аналогично скалярным переменным, а именно:
1.При объявлении переменной типа структуры ей выделяется память.
2.При передаче структуры в функцию она копируется в область памяти функции, поэтому изменение значений элементов данных структуры в функции не изменяет значений соответствующих элементов данных в основной программе.
Примечание. Если требуется возвратить структуру через список параметров функции, то желательно использовать ссылку.
Объединения
Объединения (union) позволяют по-разному интерпретировать одну и ту же область памяти, т.е. в одной и той же области памяти можно разместить разнородные элементы. Описываются объединения так же, как и структуры: сначала шаблон объединения (новый тип данных), а затем переменные этого типа данных. Например,