Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Long num;
}; Данный шаблон описывает структуру с именем типа структуры sprav, состоящую из двух компонентов: строки fio и целой переменной num типа long. Имя типа структуры sprav необязательно и используется для ссылки на эту структуру. Компоненты структуры - данные любого типа, включая и другие структуры. Имя внутри структуры может быть таким же, как имя объекта вне структуры. Если шаблон описан внутри функции - он доступен только этой функции, если шаблон описан вне функции - он доступен любой функции программы. Установка шаблона не вызывает никаких действий в программе. Структурные переменные Объявление структурных переменных приводит к выделению памяти для компонент структуры, куда можно записать данные или откуда можно прочитать их. Для объявления структурных переменных имеются несколько способов. 1. Установить структурный шаблон: struct sprav { char fio[20]; Long num; }; Объявить простую переменную, массив структур, указатель на структуру: struct sprav tel1, tel2[5], *tel3; 2. Установить структурный шаблон с помощью макроопределения: #define SPRAV struct sprav SPRAV { char fio[20]; Long num; }; Объявить переменные: SPRAV sp1, sp2[6], *sp3; 3. Объявить переменные одновременно с установкой шаблона (если на данную структуру вы больше не ссылаетесь): struct { char fio[20]; Long num; } tel1, tel2[3], *tel3; 4. Ввести новый тип данных (TEL)-структура определенного вида: typedef struct { char fio[20]; Long num; } TEL; Объявить переменные нового типа: TEL tel1, tel2[6], *tel3; Если программа достаточно объемна, представляется более удобным четвертый способ. Инициализация структуры
Инициализировать можно только внешние или статические структуры. static struct { char fio[20]; Long num; } tel[2]={ " Иванов Ф.А.", 456756, " Петров В.П.", 632345 }; Доступ к компонентам структуры Доступ к компонентам структуры продемонстрируем с помощью примеров. Пример 1. /* Обращение к элементам структуры через имя переменной */ #include < stdio.h> #include < conio.h> Void main(void) { struct{ char fio[20]; /* фамилия */ long num; /* телефон */ } tel1, tel2; Clrscr(); puts(" введите фио абонента-"); Gets(tel1.fio); puts(" введите его номер-"); scanf(" %ld", & tel1.num); tel2=tel1; /* нельзя так же сравнивать структуры */ puts(" Введено: "); printf(" Фамилия: %s номер: %ld\n", tel2.fio, tel2.num); } Пример 2. /* Динамическое выделение памяти для структуры */ /* Обращение к элементам структуры через указатель */ #include < stdio.h> #include < conio.h> #include < alloc.h> struct sprav { char fio[20]; Long num; }; Void main(void) { struct sprav *tel1, *tel2;
|