Студопедия — Объединения
Студопедия Главная Случайная страница Обратная связь

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

Объединения






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

Объединенный тип данных декларируется подобно структурному типу:

union ID_объединения {

описание полей

};

Пример описания объединенного типа:

union word {

int nom;

char str[20];

};

Пример объявления объектов объединенного типа:

union word *p_w, mas_w[100];

Объединения применяют для экономии памяти в случае, когда объединяемые элементы логически существуют в разные моменты времени либо требуется разнотипная интерпретация поля данных.

Например, поток сообщений по каналу связи пусть содержит сообще­ния трех видов:

struct m1 {

char code;

float data[100]; };

struct m2 {

char code;

int mode; };

struct m3 {

char code, note[80]; };

Элемент code - признак вида сообщения. Удобно описать буфер для хранения сообщений в виде

struct m123 {

char code;

union {

float data[100];

int mode;

char note[80]; };

};

Практически все вышесказанное для структур имеет место и для объединений.

Декларация данных типа union, создание переменных этого типа и обращение к полям объединений производится аналогично структурам.

Пример использования переменных типа union:

...

typedef union q {

int a;

float b;

char s[5];

} W;

void main(void) {

W s, *p = &s;

s. a = 4;

printf(“\n Integer a = %d, Sizeof(s.a) = %d”, s.a, sizeof(s.a));

p -> b = 1.5;

printf(“\n Float b = %f, Sizeof(s.b) = %d”, s.b, sizeof(s.b));

strcpy(p->s, “Minsk”);

printf(“\n String a = %s, Sizeof(s.s) = %d”, s.s, sizeof(s.s));

printf(“\n Sizeof(s) = %d”, sizeof(s));

getch();

}

Результат работы программы:

Integer a = 4, Sizeof(s.a) = 2

Float b = 1.500000, Sizeof(s.b) = 4

String a = Minsk, Sizeof(s.s) = 5

Sizeof(s) = 5

 

 

Перечисления

Перечисления - средство создания типа данных посредством задания ограниченного множества значений.

Определение перечислимого типа данных имеет вид

enum ID_перечислимого_типа {

список_значений

};

Значения данных перечислимого типа указываются идентификаторами. Например:

enum marks {

zero, two, three, four, five

};

Транслятор последовательно присваивает идентификаторам списка значений целочисленные величины 0,1,...,. При необходимости можно явно задать значение идентификатора, тогда очередные элементы списка будут получать последующие возрастающие значения. Например:

enum level {

low=100, medium=500, high=1000, limit

};

Примеры объявления переменных перечислимого типа:

enum marks Est;

enum level state;

Переменная типа marks может принимать только значения из множества {zero, two, three, four, five}.

Основные операции с данными перечислимого типа:

- присваивание переменных и констант одного типа;

- сравнение для выявления равенства либо неравенства.

Практическое назначение перечисления - определение множества различающихся символических констант целого типа.

Пример использования переменных перечислимого типа:

...

typedef enum {

mo=1, tu, we, th, fr, sa, su

} days;

void main(void) {

days w_day; // Переменная перечислимого типа

int cur_day, _end, _start;

// Текущий день недели, начало и конец недели, соответственно

clrscr();

puts(“ Введите день недели (от 1 до 7): ”);

scanf(“%d”, &cur_day);

w_day = su;

_start = mo;

_end = w_day - cur_day;

printf(“\n Понедельник - %d день недели, \

сейчас %d - й день и \n\

до конца недели %d дней (дня)”, _start, cur_day, _end);

getch();

}

Результат работы программы:

Введите день недели (от 1 до 7): 5

Понедельник - 1 день недели, сейчас 5 - й день и

до конца недели 2 дней (дня)

 

 

18. Файлы в языке С

 

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

Различают два вида файлов: текстовые и бинарные. Текстовые файлы представляют собой последовательность ASCII символов и могут быть просмотрены и отредактированы с помощью любого текстового редактора.

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

В языке Си имеется большой набор функций для работы с файлами, большинство которых находятся в библиотеках stdio.h и io.h.







Дата добавления: 2015-10-19; просмотров: 391. Нарушение авторских прав; Мы поможем в написании вашей работы!



Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

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

Тема 5. Анализ количественного и качественного состава персонала Персонал является одним из важнейших факторов в организации. Его состояние и эффективное использование прямо влияет на конечные результаты хозяйственной деятельности организации.

Йодометрия. Характеристика метода Метод йодометрии основан на ОВ-реакциях, связанных с превращением I2 в ионы I- и обратно...

Броматометрия и бромометрия Броматометрический метод основан на окислении вос­становителей броматом калия в кислой среде...

Метод Фольгарда (роданометрия или тиоцианатометрия) Метод Фольгарда основан на применении в качестве осадителя титрованного раствора, содержащего роданид-ионы SCN...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия