
- •Определение алгоритма
- •Классификация языков
- •Модификаторы доступа
- •Объявление переменных
- •Локальные переменные
- •Формальные параметры
- •Глобальные переменные
- •Спецификаторы хранения
- •Оператор присваивания
- •Инициализация переменных
- •Константы
- •Операторы
- •Оператор ?
- •Операторы указания & и *
- •Оператор sizeof
- •Оператор «запятая»
- •Выражения
- •Преобразования типов в выражениях
- •Принудительные преобразования типов
- •Оператор break
- •Оператор continue
- •Метки и goto
- •Одномерный массив
- •Создание указателя на массив
- •Двумерные массивы
- •Массивы строк
- •Многомерные массивы
- •Индексация с помощью указателей
- •Размещение массивов
- •Функции
- •Оператор return
- •Правила видимости для функций
- •Аргументы функции. Передача по значению и передача по указателю
- •Передача массивов в функции
- •Аргументы функции main()
- •Возврат указателей
- •Указатели на функции
- •Структуры
- •Доступ к членам структуры
- •Присваивание структур
- •Массивы структур
- •Указатели на структуры
- •Битовые поля
- •Объединения
- •Перечисления
- •Использование typedef
- •Ввод, вывод, потоки и файлы
- •Форматированный консольный ввод-вывод
- •Модификаторы формата
- •Файловая система ansi c
- •Запись и чтение символа
- •Использование feof()
- •Работа со строками: fgets() и fputs()
- •Указатели
- •Односвязные списки
- •Обход односвязного списка
- •63.Бинарное дерево поиска. Вставка и поиск элемента по ключу в бинарном дереве поиска. Поиск элемента (find)
- •Добавление элемента (insert)
- •64.Бинарное дерево поиска. Удаление элемента из бинарного дерева поиска. Удаление узла (remove)
- •65.Обход бинарного дерева
- •66.Балансировка бинарного дерева поиска
-
Структуры
Структура – это совокупность переменных, объединённых одним именем, предоставляющая общепринятый способ совместного хранения информации. Объявление структуры приводит к образованию шаблона, используемого для создания объектов структуры. Переменные, образующие структуру, называются членами структуры. (Члены структуры также часто называются элементами или полями.)
Фрагмент кода объявляет структуру, определяющую имя и адрес. Ключевое слово struct сообщает компилятору об объявлении структуры.
struct addr {
char name[30];
char street[40];
char city[20];
char region[3];
unsigned long int zip;
};
Объявление завершается точкой с запятой, поскольку объявление структуры – это оператор. Имя структуры addr идентифицирует структуру данных и является спецификатором типа. Имя структуры часто используют как ярлык.
Пока не создано никакой переменной. Определена только форма данных. Для объявления переменной, соответствующей данной структуре, следует написать:
addr addr_info; //C++
struct addr addr_info; //C
Когда объявлена структурная переменная, компилятор автоматически выделяет необходимый участок памяти для размещения всех её членов.
При объявлении структуры можно одновременно объявить одну или несколько переменных. Например:
struct addr {
char name[30];
char street[40];
char city[20];
char region[3];
unsigned long int zip;
} addr_info, binfo, cinfo;
объявляет структуру addr и переменные addr_info, binfo, cinfo данного типа.
Если необходима только одна структурная переменная, то нет необходимости в ярлыке структуры. Это означает, что
struct {
char name[30];
char street[40];
char city[20];
char region[3];
unsigned long int zip;
} addr_info;
объявляет одну переменную addr_info с типом определённым предшествующей ей структурой.
Стандартный вид объявления структуры следующий:
struct ярлык{
тип имя_переменной;
тип имя_переменной;
тип имя_переменной;
…
} структурные переменные;
-
Доступ к членам структуры
Доступ к отдельным членам структуры осуществляется с помощью оператора . («точка»). Например, следующий фрагмент кода присваивает члену zip структурной переменной addr_info значение 12345:
addr_info.zip = 12345;
Ко всем членам структуры доступ осуществляется точно таким же способом. Стандартный вид доступа следующий:
имя_структуры.имя_члена
Таким образом, массив символов addr_info.name может использоваться в fgets():
fgets(addr_info.name,30,stdin);
Для доступа к отдельным элементам addr_info.name можно использовать индекс. Например:
register int t;
for(t=0; addr_info.name[t]; ++t) putchar(addr_info.name[t]);
-
Присваивание структур
Информация, содержащаяся в одной структуре, может быть присвоена другой структуре того же типа с помощью одиночного оператора присваивания, то есть не нужно присваивать значение каждого члена по отдельности. Следующая программа демонстрирует присваивание структур:
#include <stdio.h>
int main()
{
struct ab{
int a;
int b;
} x, y;
x.a = 10;
x.b = 20;
y = x;
printf(“Contents of y: %d %d.”, y.a, y.b);
return 0;
}
После присваивания y.a и y.b будут содержать значения 10 и 20 соответственно.