68980

Структури, об’єднання

Лекция

Информатика, кибернетика и программирование

Структура - це з’єднане в єдине ціле безліч поіменованих елементів (компонентів) даних. На відміну від масиву, який завжди складається з однотипних елементів, компоненти структури можуть бути різних типів і всі повинні мати різні імена.

Украинкский

2014-09-28

36.5 KB

1 чел.

Лекція № 7

Тема: Структури, об'єднання

План

  1.  Структурний тип
  2.  Об'єднуючий тип

Структурний тип.

Структура - це з'єднане в єдине ціле безліч поіменованих елементів (компонентів) даних. На відміну від масиву, який завжди складається з однотипних елементів, компоненти структури можуть бути різних типів і всі повинні мати різні імена.

 

struct ім'я_структурного_типу { визначення_элементів };

де    struct - специфікатор структурного типу;

ім'я_структурного_типа - ідентифікатор, довільно вибираний програмістом;

визначення_элементів - сукупність одного або більш описів об'єктів, кожний з яких служить прототипом для елементів структур структурного типу, які вводиться. Визначення закінчується крапкою з комою.

Конструкція struct ім'я_структурного_типа грає ту ж роль, що і специфікатори типів, наприклад, double або int За допомогою struct можна або визначити конкретну структуру або покажчик на структури такого типу.

Приклад:

struct student {

char name[20];

short int age;

float s_b;

}

Ще одну можливість ввести структурний тип дає службове слово typedef, яке дозволяє ввести власне визначення для будь-якого  типу. У разі структурного типу він може бути введений і поіменований таким чином: typedef struct {визначення_элементів} позначення _структурного_типа;

Приклад:

typedef struct {

 визначення елементів;

} імя_структурного типу;

Наприклад:

typedef struct {

char processor[30];

char MB[30];

int HDD,OP;

}

computer MyComp, User;

Доступ до елементів структур відбувається за допомогою оператора "."

MyComp.HDD = 40000;

Якщо змінна визначена як вказівник на структуру, доступ до елементів відбувається за допомогою оператора "->"

computer *comp;

comp->op = 256000;

Об’єднуючий тип

Із структурами в "близькій спорідненості" знаходяться об'єднання, які вводяться за допомогою службового слова union. Об'єднання можна розглядати як структуру, всі елементи якої мають нульовий зсув від її початку. При такому розміщенні різні елементи займають в пам'яті одну і ту ж ділянку. Тим самим об'єднання забезпечують можливість доступу до однієї і тієї ж ділянки пам'яті за допомогою змінних (і/або масивів і структур) різного типу. Необхідність в такій можливості виникає, наприклад, при виділенні з внутрішнього представлення цілого числа його окремих байтів:

union  {

char hh[2];

int     ii;

}   СС;

Тут:

•  union    -    службове    слово,    яке вводить    тип    даних "об'єднання" або об'єднуючий тип даних;

•  СС - ім'я конкретного об'єднання;

•  символьний масив char hh[2] і ціла змінна int ii -елементи (компоненти) об'єднання.

Для звернення до елемента об'єднання використовуються ті ж конструкції, що і для звернення до елемента структури:

ім'я_об'єднання.ім'я_елемента

( * покажчик_на_об'єднання ).ім'я_елемента

покажчик_на_об'єднання -> ім'я_елемента

Смислова відмінність об'єднання від структури полягає в тому, що записати інформацію в об'єднання можна за допомогою одного з його елементів, а вибрати дані з тої ж ділянки пам'яті можна за допомогою іншого елемента того ж об'єднання. Наприклад, оператор

CC.ii =  15;

записує значення 15 в об'єднання, а за допомогою конструкцій CC.hh[0], CC.hh[l] можна отримати окремі байти внутрішнього представлення цілого числа 15.

Як і дані інших типів, об'єднання - це конкретний об'єкт, якому виділено місце в пам'яті.

Розміри ділянки пам'яті, які виділяється для об'єднання, повинні бути достатні для розміщення найбільшого елемента об'єднання. В прикладі елементи int  іі і char hh[2] мають однакову довжину, але це не обов'язково. Основна властивість об'єднання полягає в тому, що всі його елементи розміщуються від початку однієї і тієї ж ділянки пам'яті. А розміри ділянки пам'яті, відведені  для об'єднання, визначаються розміром найбільшого з елементів. Наприклад, для об'єднання

union {

double dd;

float aa;

int  jj;

} uu;

Розміри об'єкту-об'єднання uu рівні розмірам найбільшого з елементів.

Іменований об'єднуючий тип вводиться за допомогою визначення такого вигляду:

union   ім'я_об'єднуючого_типу { визначення_элементів };

де     union - специфікатор типу;

ім'я_об'єднуючого_типу - вибираний програмістом ідентифікатор;

визначення_елементів - сукупність описів об'єктів, кожний з яких є прототипом одного з элементів об'єднань об'єднуючого  типу який вводиться.

Як і для структурних типів, за допомогою typedef можна вводити позначення об'єднуючих типів, не вимагаючі застосування union:

typedef union ім'я_об'єднуючого_типу {

визначення_элементів

} визначення_об'єднуючого_типу;

 


 

А также другие работы, которые могут Вас заинтересовать

24399. Особенности туризма как объекта управления 26.5 KB
  Так как туристский продукт проявляется в виде услуги то его необходимыми признаком является невозможность хранения этой услуги. В отличие от материальных товаров услуги нельзя попробовать на вкус на ощупь их не увидишь и не услышишь до момента их непосредственного оказания. Неотделимость от источника и объекта услуги. Оказание услуги требует присутствия и того кто оказывает ее и того кому она оказывается.
24401. Управление через договор франчайзинга 69.5 KB
  Управление через договор франчайзинга. Термин франчайзинг имеет французские корни franchise привилегия льгота и означает в современном понимании систему договорных отношений между крупными и мелкими самостоятельными предприятиями при которой последние получают право на производство и реализацию от имени и под торговой маркой крупной фирмы определенного вида товаров и услуг. Франчайзинг как специфическая разновидность договора зародился в США. В 60е годы франчайзинг стал стратегией роста и развития гостиниц и мотелей.
24402. Профессиональная этика 33 KB
  Содержание любой профессиональной этики складывается из общего и частного. Общие принципы профессиональной этики базирующиеся на общечеловеческих нормах морали предполагают: а профессиональную солидарность иногда перерождающуюся в корпоративность; б особое понимание долга и чести; в особую форму ответственности обусловленную предметом и родом деятельности. Профессиональные этики как правило касаются лишь тех видов профессиональной деятельности в которых наличествует разного рода зависимость людей от действий профессионала т.
24403. Нормативная этика 29 KB
  Все моральные учения и этические теории выдвигавшиеся в истории в конечном итоге были посвящены решению практических нравственных проблем. И каждый теоретик посвоему обосновывал моральные представления того обва и класса духовным выразителем интересов крого он выступал хотя субъективно стремился к созданию беспристрастной теории возвышающейся над различными моральными позициями. края содержит моральные оценки и предписания но не может быть научной и метаэтику края является якобы строго научной теорией очищенной от моральных...
24404. Деловое общение 42 KB
  Дейл Карнеги еще в 30е годы заметил что успехи того или иного человека в его финансовых делах даже в технической сфере или инженерном деле процентов на пятнадцать зависят от его профессиональных знаний и процентов на восемьдесят пять от его умения общаться с людьми в этом контексте легко объяснимы попытки многих исследователей сформулировать и обосновать основные принципы этики делового общения или как их чаще называют на Западе заповеди personal public relation весьма приближенно можно перевести как деловой этикет. Только поведение...
24405. Системы этического знания: теоретическая и нормативная этика 102 KB
  Системы этического знания: теоретическая и нормативная этика. Этика наука изучающая феномен морали. Слово этика от греч. В целом же слова этика мораль нравственность продолжают употребляться как взаимозаменяемые.
24406. Система этического знания 30 KB
  Этика обычай нрав характер это совокупность принципов и норм поведения принятых в данной эпохе и в данной социальной среде. Этика зарождается в обществе как результат осознания роли и сущности моральных отношений и в развитом состоянии представляет собой науку о морали содержащую две составляющих: теоретические исследования теоретическая этика и нормативные разработки нормативная этика. Теоретическая этика исследует происхождение и сущность морали ее роль и место в обществе функции механизм действия ее...
24407. Профессиональная этика. Этика управления. Взаимоотношения руководителя и подчиненных 32.5 KB
  Профессиональная этика. Этика управления. Профессиональная этика это совокупность определенных обязанностей и норм поведения поддерживающих моральный престиж профессиональных групп в обществе. Профессиональная этика вырабатывает нормы стандарты требования характерные для определенных видов деятельности.