рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Определение структурных переменных. Доступ к компонентам структуры.

Определение структурных переменных. Доступ к компонентам структуры. - раздел Образование, Общая характеристика языка Си в сравнении с другими процедурными языками Структура Объединяет Логически Связанные Данные Разных Типов. Структурный Тип...

Структура объединяет логически связанные данные разных типов. Структурный тип данных определяется следующим описанием:

 

struct имя_структуры {

 

Описание_элементов

 

};

 

Пример:

 

struct dinner {

 

char *plase;

 

float cost;

 

struct dinner *next;

 

};

 

Структурная переменная описывается с помощью переменной структурного типа.

 

Примеры:

 

struct dinner week_days [7]; /* массив структур */

 

struct dinner best_one; /* одна структурная переменная */

 

struct dinner *p; /* указатель на структурную переменную */

 

Структура, запись в терминологии языка Паскаль и Ада, - это составной объект, в который входят компоненты любых типов, за исключением функций. В отличие от массива, который является однородным объектом, структура может быть неоднородной. Тип структуры указывается записью вида

 

struct{

 

список описаний

 

}

 

В структуре должен быть указан хотя бы один компонент. Указатель типа структуры используется для определения структур. Определения структур имеют следующий вид:

 

тип-данных описатели;

 

где тип-данных указывает тип структуры для объектов, определяемых в описателях. В своей простейшей форме описатели представляют собой обычные имена переменных, массивов, указателей и функций. Например, с помощью определения

 

struct {

 

double x,y;

 

} a,b,c[9];

 

переменные a и b определяются как структуры, каждая из которых состоит из двух компонентов - x и y. Переменная с определяется как массив из девяти таких структур.

 

Из определения

 

struct {

 

int year;

 

short int month, day;

 

} date1,date2;

 

следует, что каждая из двух переменных date1, date2 состоит из трех компонентов: year, month, day.

 

С типом структуры может быть ассоциировано имя, которое задается описанием типа в форме

 

typedef struct {

 

список описаний

 

} имя-типа-структуры;

 

Функция typedef позволяет нам создать свое собственное имя типа. Это напоминает директиву #define, но со следующими тремя изменениями:

 

В отличие от #define функция typedef дает символические имена, но ограничивается только типами данных.

 

Функция typedef выполняется компилятором, а не препроцессором.

 

В своих пределах функция typedef более гибка, чем #define.

 

В дальнейшем эти имена могут использоваться для определения структур. Ниже приведен пример описания типа структуры с именем employee:

 

typedef struct {

 

char name[30];

 

int id;

 

dept d;

 

family f;

 

} employee;

 

где слова dept, family указывают типы, а именно типы структур, предварительно определенные пользователем. Тип структуры employee может быть использован для определения переменных. Например, определение

 

employee chaiperson, president, eq, e2;

 

описывает переменные chairperson, president, e1, e2 как структуры типа employee.

 

Существует и другой способ ассоциирования имени с типом структуры. Этот способ основан на применении меток структуры. Метки структуры аналогичны меткам перечисляемого типа. Метка структуры описывается следующим образом:

 

struct метка{

 

список описаний

 

}

 

где метка является идентификатором. В приведенном ниже примере слово student описывается как метка структуры:

 

struct student {

 

char name[25]

 

int id,age;

 

char sex;

 

};

 

^ Метки структуры используются для определения структур записью вида

 

struct метка список-идентификаторов;

 

Использование меток структуры необходимо для описания рекурсивных структур, так как одного только оператора typedef недостаточно. В приведенном ниже примере описания рекурсивной метки структуры

 

struct node {

 

int data;

 

struct node *next;

 

};

 

метка структуры node действительно является рекурсивной, так как она используется в своем собственном описании, т.е. в описании указателя next. Из-за наличия знака * переменная next описана как указатель на объекты типа node. Структуры не могут быть прямо рекурсивными. Структура типа S не может содержать компонент, являющийся структурой типа S. Однако структура типа S может содержать компонент, указывающий на структуру типа S.

^ Доступ к компонентам структуры

 

Такой доступ осуществляется с помощью специального обозначения для выделенного компонента, имеющего следующий вид:

 

s.c

 

где s является именем структуры или значением структуры с компонентом c. s может быть выражением, дающим в результате значение структуры. Например, s может быть вызовом функции со структурой в качестве ее значения. К компонентам определенной выше структуры date1 можно обратиться, указав их обозначения:

 

date1.year

 

date1.month

 

date1.day

^

 

 

– Конец работы –

Эта тема принадлежит разделу:

Общая характеристика языка Си в сравнении с другими процедурными языками

Операции языка Си... Любое выражение языка состоит из операндов переменных констант и др соединенных знаками операций Знак операции...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Определение структурных переменных. Доступ к компонентам структуры.

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Общая характеристика языка Си в сравнении с другими процедурными языками.
Общая характеристика языка программирования Си. Алфавит языка. Понятие переменной и константы в языке программирования Си, их типы. Примеры. Язык программирования Си был разработан в 1972 году сотр

Основные типы данных, переменные и константы. Препроцессор языка Си.
  В алфавит языка программирования Си включаются латинские буквы (прописные и строчные), цифры и некоторые специальные знаки: скобки круглые “(“ и “)” , квадратные “[“ и “]” , фигурны

Ввод-вывод чисел, символов и строк на консоль. Переключение ввода-вывода, работа с файлами.
Под функциями ввода-вывода подразумеваются функции, которые выполняют транспортировку данных в программу и из нее. Мы уже использовали две такие функции: printf( ) и scanf( ). Теперь рассмотрим нес

Циклы и другие управляющие средства.
Цикл с предусловием   Существует три вида циклов: while, for и do. Цикл while имеет следующую форму: while (e) s;   Оператор s выполняется до

Строковые константы, массивы символьных строк и их инициализация. Указатели и строки, ввод-вывод и обработка строк.
В языке C, в отличие от языка Pascal, отсутствует специальный строковый тип данных. Строка представляет собой последовательность (одномерный массив) из одного или более символов, последним из котор

Объединения и перечисления. Указатели и структуры. Массив структур.
Объединения   Объединение описывает переменную, которая может иметь любой тип из некоторого множества типов.   Определение объединенного типа данных ан

Стандартные библиотечные функции языка Си, функция генерации случайных чисел.
Библиотека языка Си содержит множество функций и макроопределений. Библиотеки меняются от системы к системе, но есть ядро функций (стандартная библиотека).   Эти функции испо

Динамические структуры данных (стек, список, дерево, граф).
  Стек (англ. stack — стопка) — структура данных с методом доступа к элементам LIFO (англ. Last In — First Out, «последним пришел — первым вышел»). Чаще всего принцип работы стека сра

Графический интерфейс пользователя (GUI). Типы данных Win32.
Графи́ческий интерфе́йс по́льзователя (ГИП), графический пользовательский интерфейс (ГПИ) (англ. Graphical user interface, GUI; сленг. ГУИ или Гуй) — разновидность пользовательского

Обработка сообщений от клавиатуры, часто используемые сообщения.
Существует несколько способов обработки сообщений от клавиатуры, каждый метод пригоден для той или иной ситуации. Рассмотрим самые основные и распространенные методы обработки сообщений клавиатуры.

Однострочное и многострочное поле для ввода текста.
Можно создавать одну или несколько строк текста, каждая из которых является отдельным объектом. Строки можно по отдельности перемещать, форматировать или редактировать иным образом.  

Создание процесса, создание потока, рабочие функции потока, обмен сообщениями между процессами и потоками.
Функция CreateThread создает для процесса новый поток. Созданный поток должен определить начальный адрес кода, с которого новый поток должен исполняться. Как правило, начальный адрес - это название

Графический интерфейс устройства (CDI). Контекст устройства. Регионы и отсечение.
Графический интерфейс пользователя (Graphical User Interface, GUI) это система средств для взаимодействия пользователя с устройством, основанная на представлении всех доступных пользователю системн

Режимы многозадачности, многопоточная архитектура, преимущества Windows.
Многозадачность (multitasking) - это способность операционной системы выполнять несколько программ одновременно. В основе этого принципа лежит использование операционной системой аппаратного таймер

Базовый алгоритм численного интегрирования методом прямоугольников.
Задача численного интегрирования состоит в замене исходной подинтегральной функции f(x), для которой трудно или невозможно записать первообразную в аналитике, некоторой аппроксимирующей функцией &#

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги