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 ім'я_об'єднуючого_типу {

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

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

 


 

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

29490. ФАКТОРЫ И ФАНТОМЫ ОБЩЕСТВЕННОГО ДОВЕРИЯ (постэлекторальные размышления) 87 KB
  Не дорожи любовию народной Показатель массового доверия или недоверия к политическим партиям деятелям социальным институтам один из наиболее употребительных обобщенных и как будто наиболее чутких индикаторов в опросах общественного мнения. Вот некоторые парадоксы общественного доверия выявленные в опросах упомянутой серии: рост показателей доверия к Б. Ельцину на протяжении избирательной президентской кампании при сохранении резко критических оценок его деятельности; значительное расхождение между рейтингами доверия и электоральной...
29491. СОЦИАЛЬНЫЕ ТИПЫ ПЕРЕХОДНОГО ПЕРИОДА: ПОПЫТКА ХАРАКТЕРИСТИКИ 103 KB
  Представляется общепризнанным что каждая социальная система в каждый значимый период ее существования формирует выдвигает некоторый специфический набор социальноантропологических типов. В условиях модернизационных процессов индустриализация НТР урбанизация образовательная революция в число значимых признаков социальноантропологических типов естественно попадают такие объективные индикаторы как род занятий тип расселения уровень образования и т д. Данные такого рода пригодны для описания внешних условий деятельности различных...
29492. МАССОВЫЙ ПРОТЕСТ: ПОТЕНЦИАЛ И ПРЕДЕЛЫ 95 KB
  Прежде всего это относится к характеру массовых выступлений протеста развернувшихся со второй половины 1996 г. и увенчавшихся пока организованной профсоюзным руководством акцией протеста 27 марта 1997 г. Кто заявляет о готовности протестовать Обратимся к показателям возможного декларативного участия в акциях протеста различных групп. Если как отмечалось ранее центральными фигурами в ожиданиях или опасениях протеста являются образованные люди то главный носитель настроений протеста малообразованные.
29494. ОБЩЕСТВЕННОЕ МНЕНИЕ НА ПЕРЕЛОМЕ ЭПОХ: ОЖИДАНИЯ, ОПАСЕНИЯ, РАМКИ (К социологии политического перехода) 147.5 KB
  Сама сложность такого перехода давно может считаться некой отечественной традицией: персонализация верховной власти при неразвитости формальных политических институтов в России неизменно в течении нескольких столетий приводила к тому что смена первых лиц означала смену политических эпох стилей и механизмов господства состава и роли определенных групп влияния и т. Очевидно при этом что соблюдение конституционных рамок и видимая бесконфликтность даже фактическое отсутствие конкуренции обеспечены смещением решающих политических и...
29495. Элита и «масса» в общественном мнении: проблема социальной элиты 76 KB
  Принято выделять элиты по их профессиональному месту по роду их занятий в обществе и соответственно говорить об интеллектуальных политических военных экономических культурных и т. Эта категория элиты действует преимущественно через системы и средства массовой информации. Поэтому кстати численность публичной элиты ограничена немногими десятками лиц это определяется возможностями самого поля массового внимания или фигурально выражаясь размерами подиума.
29496. КОМПЛЕКСЫ ОБЩЕСТВЕННОГО МНЕНИЯ (Статистика и социология в изучении общественного мнения) 174 KB
  При таком статистическом подходе существуют проблемы измерения общественного мнения но нет вопроса о его структуре и функциях2. но и так сказать изнутри в смысле самого языка общественного мнения символы стереотипы комплексы значений и средств выражения. Понятно что отечественный опыт последних лет питает сомнения и разочарования в отношении эффективности любых демократических институтов в том числе и общественного мнения в нынешнем российском обществе.
29497. ЧЕЛОВЕК, ТОЛПА И МАССА В ОБЩЕСТВЕННОМ МНЕНИИ 104.5 KB
  В частности это относится к пугающему одних и ободряющему других в зависимости от позиции представлению о всемогуществе масскоммуникативного влияния на массовую аудиторию на массового человека. В конечном счете это приводит к одной из граней извечной проблемы общественного человека: как и насколько может и желает человек поддаваться давлению коммуникативных средств массового поражения. О генезисе массового общества С.
29498. ВОЗВРАЩАЯСЬ К ПРОБЛЕМЕ СОЦИАЛЬНОЙ ЭЛИТЫ 141.5 KB
  Но каждое время то есть каждая социальная ситуация выбирает поддерживает пестует продвигает подходящий для нее тип человека. Если на поверхности советской системы находился человек послушнокарьерный то с ее распадом на переднем плане в политической жизни бизнесе медиа социальнонаучной сфере и около них оказался человек ловкий ориентированный на ближайший успех и не связанный ни ценностными ни социальногрупповыми рамками ответственности. Массовый человек ориентируется практически не на те звездные образцы политкумиров...