Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Декларация переменных структурного типаСодержание книги
Поиск на нашем сайте Доступ к элементам структурной переменной Массивы структур Оператор sizeof Декларация typedef Понятие структуры в языке Си Структура - это одна или несколько переменных, возможно, различных типов данных, которые сгруппированы под одним именем. В языке Си термин "структура" соответствует понятию "запись" в языках программирования. Пример 1: строка таблицы журнала студенческой группы.
Пример 2: точка в пространстве.
Пример 3: круг на плоскости.
Для того, чтобы работать со структурой, необходимо: 1. объявить структурный тип; 2. декларировать переменные этого типа. Объявление типа структуры Синтаксис: struct [<имя = тег>] {<Декларация_члена 1>; <Декларация_члена 2>; ... <Декларация_члена n>; }; Декларация структуры - это описание типа данных. Пример 4: точка А в пространстве. struct struct point {Int xa {int xa; int ya; int ya; int za; int za; };}; / * Без тега * / / * с тегом * / / * Новый тип - struct point * / Пример 5: круг на плоскости. struct struct circle {Float x0 {float x0; float y0; float y0; float r; float r; };}; / * Без тега * / / * с тегом * / / * Новый тип - struct circle * / Декларация переменных структурного типа Синтаксис: I. <Декларация типа структуры> <список переменных>; Это сочетание способов, в котором в одной декларации описывается структурный тип и переменные этого структурного типа. II. struct <тег> <список переменных> В этом случае описание структурного типа с тегом выполняется предварительно, а затем используется для описания переменных. Пример 6: описать прямую, проходящую через точки А i В, Используя ранее введенный тип для представления точки в пространстве. struct struct point {Int xa {int xa; int ya; int ya; int za; int za; } A, b;}; struct point a, b; Инициализации структурных переменных можно выполнить при ее объявлении (по аналогии с массивами): Пример 7: круг с центром (2, 3) и радиусом 5,5. / * Без тега * / / * с тегом * / struct circle pr = {2.0, 3.0, 5.5} {Float x0; float y0; float r; } Pr = {2.0, 3.0, 5.5}; Доступ к элементам структурной переменной Синтаксис: <Имья_структуры>. <имья_члена>
Пример 8: расстояние от (0,0) до точки pt. struct {Float x; float y; } Pr = {20,15} double dist; dist = sqrt ((double) pt.x * pt.x + (double) pt.y * pt.y); printf («От начала координат"); printf ("до точки (% f,% f)", pt.x, pt.y); printf ("расстояние% f", dist); Структуры можно вкладывать друг в друга (нет ограничения на глубину вложения).
Прямоугольник на плоскости образуется в результате пересечения двух прямых углов, в которых стороны Параллельные осям координаты, первый из этих углов образуется точкой pt1, второй угол - точкой pt2. Пример 9: задания прямоугольника координатами точек двух углов. struct rectange { struct point pt1; struct point pt2; }; srtuct rectange poly; float a; / * длина стороны а * / a = poly.pt2.x - poly.pt1.x; printf ("Длина стороны a =% f \ n", a);
Массивы структур Структуры можно объединять в массивы (получаем таблицу): Пример 10: список студентов с результатами экзаменов. # Define KST 35 struct list {Char * fio; int math; int phys; int r_l; }; struct list group [KST]; Пример 11: Объявление таблицы с инициализацией. struct list gr [] = { {"Андреев", 5, 5, 5}, {"Борисенко", 5, 4, 4}, .......... {"Якименко", 4, 4, 4} };
Оператор sizeof В декларации списка студентов мы определили размер этого списка (массива структур) с помощью поименованной константы KST: # Define KST 35 Еще один вариант определения размера этого массива такой. Размер этого массива полностью определен во время компляцiи I дорвнюе произведения количества элементов массива на размер его отдельного элемента, поэтому число элементов массива вычисляется: число элементов массива = <размер> group / <размер> struct list В языке Си есть оператор sizeof (унарный, префiксний, правоасоцiативний, высший приоритет). Он работает во время компляцiи. Он применяется для исчисления размера любого объекта: · sizeof <обкт> · sizeof (<имя типа данных>) Результат этого оператора целое, равной размеру (в байтах) объекта или типа данных. Объектом может быть: · переменная; · массив; · структура. Именем типа данных может быть: · имя базового типа (int, long, float,...); · имя производной типа (структуры или указателя). Поэтому в операторi препроцессору define возможные записи: # Define KST (sizeof group / sizeof (struct list)) # Define KST (sizeof group / sizeof group [0]) Второй оператор содержит не <имя типа данных>, а объект (первый элемент массива group).
Декларация typedef Эта декларация позволяет давать новые имена типам данных. Синтаксис: typedef <старое имя типа> <новое имя типа>; Семантика: <Старое имя> i <новое имя> становятся синонимами. Пример 12: объявление таблицы с результами экзаменов студентов. typedef INT Ekz; typedef CHAR * String; typedef Struct List {String fio; Ekz math; Ekz phys; Ekz r_l; } Liststud; Liststud Group [KST]; Этот пример iлюстуе использования того имени типа данных, который был декларирован в typedef. Синтаксис: <Тип, объявленный typedef> <список змнних> Принято имя типа-синоньма, объявление в typedef, начинать с большой буквы, чтобы отличать его от базовых типов. Причины использования typedef: 1. эстетическая: одним именем заменяется сложная декларация типа данных; 2. стремление сделать текст программы более ясным. Например, вместо 3. struct list * pstr; / * указатель на структуру типа list * / можно объявить: typedef struct list * Plist; / * указатель (P List) на структуру типа list * / Plist pstr; 4. typedef використують для обеспечения машинной независимости программы на языке Си. Например, зависят от реализации величины цiлочисельних типов данных (int, short, long) i действительных (double, long double). При переносi на другую платформу меняют только декларации typedef, а не декларации всех переменных (целых i действительных). typedef не создает новый тип данных, а создает только синоним для существующего типа данных.
|
||
|
Последнее изменение этой страницы: 2017-01-27; просмотров: 553; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.009 с.) |