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

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

Объединения





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

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

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; просмотров: 405. Нарушение авторских прав; Мы поможем в написании вашей работы!




Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Мотивационная сфера личности, ее структура. Потребности и мотивы. Потребности и мотивы, их роль в организации деятельности...

Классификация ИС по признаку структурированности задач Так как основное назначение ИС – автоматизировать информационные процессы для решения определенных задач, то одна из основных классификаций – это классификация ИС по степени структурированности задач...

Внешняя политика России 1894- 1917 гг. Внешнюю политику Николая II и первый период его царствования определяли, по меньшей мере три важных фактора...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

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