Реферат Курсовая Конспект
Объединения. - раздел Информатика, Позволяет пользователю дать новое имя некоторому типу Объединение (Union) – Частный Случай Структуры, Включает Дан...
|
Объединение (union) – частный случай структуры, включает данные разных типов. Особенность объединения состоит в том, что все поля его располагаются по одному и тому же адресу, т.е. все элементы объединения при размещении в памяти имеют одно и тоже нулевое смещение от начала.
Размер объединения равен максимальной из длин его полей.
Описание объединения напоминает описание структуры:
union [имя типа] {описание полей} [список имён] ;
Список имён может содержать имена переменных, указатели,массивы.
Имя типа указывать необязательно,тогда надо указать элемент(ы) в списке имён. Можно указать и то и другое.
Пример.
union ch // ch - имя типа {double x; сhar s[8]; }; | union // имени типа нет {double x; сhar s[8]; }q; //переменная q-объединение |
Если введён тип, то можно определять (аналогично структурам):
ch v,w[4]; //переменные, массивы
ch *pch; //указатели
Обращение к элементу объединения:
Имя_объединения . имя_элемента
Указатель на объединение -> имя_элемента
*( Указатель на объединение). имя элемента
Примеры: v.x v.s[i] pch->x *(pch).x
Занести значение в объединение можно присвоив его элементу это значение: q.x=1.57E-2;
Назначение объединения-обеспечить возможность доступа к одному и тому же участку памяти с помощью разных типов. Это позволяет, например, задав значение вещественного числа x, посмотреть (и вывести) содержимое его отдельных байтов s[i], и таким образом получить внутреннее представление вещественного x. Для вещественного данного такой доступ к отдельным байтам невозможен.
//Внутреннее представление вещественных данных
#include <iostream>
#include <iomanip>
using namespace std;
typedef double tip; // рассматриваемый тип обозначим tip
const int L=sizeof(tip); // размер типа в байтах
union {
tip a;
unsigned char u[L];
}q; // q- включает вещ.данное и массив
//байтов размера, равного размеру типа tip
// здесь необходимо учитывать, что значение a в памяти хранится
//в перевёрнутом виде: от младшего байта к старшему,
//внутренность байта не переворачивается.
//Байты строки u в памяти хранятся в порядке u[0],u[1],…u[L-1]
//т.е. u[0]наложится на младший байт a,…u[L-1] на старший байт
//a, поэтому вывод надо начинать с u[L-1], затем u[L-2],… ,u[0], либо строку S формировать с конца.
void binkod (tip n, char s[])
{//функция формирует строку s с двоичным представлением //вещественного данного n.
– Конец работы –
Эта тема принадлежит разделу:
Замечание typedef и define... typedef позволяет пользователю дать новое имя некоторому типу... typedef тип новое имя размерность...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Объединения.
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов