Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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;






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.