
- •Программа на с, включение заголовочных файлов стандартной библиотеки и разработанных пользователем. Именованные константы и макроопределения. Идентификаторы.
- •Типы данных (скалярные, составные). Размер памяти основных типов данных. Модификатор const.
- •Константы (целые, с плавающей точкой, символьные, строковые). Управляющие (Эскейп) последовательности.
- •Операторы с. Назначение. Условные выражения.
- •Функции. Объявление и определение функций, их отличие. Классы памяти и области действия функций. Типы возвращаемых значений. Формальные и фактические параметры. Вызов функции.
- •Объявление переменной. Классы памяти переменных. Области действия и время "жизни".
- •Массивы. Одномерные. Многомерные. Объявление. Инициализация. Использование индексных выражений для доступа к элементам массива.
- •Указатели. Объявление. Использование. Приведение типов для указателей на void. Операции над указателями.
- •Операции. Унарные операции. Бинарные. Тернарная. Присваивания. Приведение типов.
- •Структуры. Объявление. Выбор элементов структуры. Использование указателей на структуры.
- •Объединения. Их объявление.
Структуры. Объявление. Выбор элементов структуры. Использование указателей на структуры.
Структурой в языке C называется совокупность логически связанных переменных различных типов, сгруппированных под одним именем для удобства дальнейшей обработки.
Объявление переменной структурного типа имеет следующий вид:
struct ID var1;
при этом в программе создается переменная с именем var1 типа ID. Все переменные, использующие один шаблон (тип) структуры, имеют одинаковый набор полей, однако различные наборы значений, присвоенные этим полям. При объявлении переменной происходит выделение памяти для размещения переменной. Шаблон структуры позволяет определить размер выделяемой памяти.
Указатели на структуру
Если функции передается большая структура, то эффективнее передать указатель на эту структуру, нежели копировать ее в стек целиком. Указатель на структуру по виду ничем не отличается от указателей на обычные переменные.
Формат: struct point *pp;
где pp – указатель на структуру типа struct point, *pp – сама структура, (*pp).x и (*pp).y – члены структуры.
Скобки (*pp).x необходимы, так как приоритет операции (.) выше приоритета операции (*). В случае отсутствия скобок *pp.x понимается как *(pp.x).
Инициализация указателя на структуру выполняется так же, как и инициализация указателей других типов: struct point var1, *S1; здесь var1 – структурная переменная, *S1 – указатель на структуру.
Для определения значения указателя ему нужно присвоить адрес уже сформированной структуры:
S1 = &var1;
Указатели на структуру используются в следующих случаях:
· доступ к структурам, размещенным в динамической памяти;
· создание сложных структур данных – списков, деревьев;
· передача структур в качестве параметров в функции.
Объединения. Их объявление.
Для объявления объединений в C используют ключевое слово union. Объединение в C может содержать объявления полей разных типов, кроме типа самого данного объединения. Особенностью объединения в Си является то, что все поля объединения имеют одинаковый адрес в памяти. Это приводит к тому, что в данный момент можно определить значение только одного поля объединения в Си.
Объявить объединение в Си означает описать новый тип данных. И каков этот тип? union myUnion. Объявим и определим переменную uUnion типа union myUnion:
union myUnion uUnion = {150};
инициализировать можно только первую переменную объединения в C.
Память для объединения выделяется по размеру самого длинного поля, в примере это поле типа double.
Пример на C++
union Some {
int i;
double a;
};