Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Видно из этого примера, объединение объявляется с помощью ключевого слова union. Чтобы получить доступ к элементу объединения, используйте тот же синтаксис, который





применяется и для структур: операторы "точка" и "стрелка". При непосредственном обращении

к объединению (или посредством ссылки) используется оператор "точка". Если же доступ к

переменной объединения осуществляется через указатель, используется оператор "стрелка".

Например, чтобы присвоить букву 'А' элементу ch объединения u_var, достаточно использовать

Такую запись.

u_var.ch = 'А';

В следующем примере функции передается указатель на объединение u_var. В теле этой

Функции с помощью указателя переменной i присваивается значение 10.

//...

func1(&u_var); // Передаем функции func1() указатель на объединение u_var.

//...

}

void fund (utype *un)

{

un->i = 10; /* Присваиваем число 10 члену объединения u_var с помощью

указателя. */

}

// Использование объединения для перестановки двух байтов в рамках короткого

Целочисленного значения.

#include <iostream>

Using namespace std;

Void disp_binary(unsigned u);

union swap_bytes {

Short int num;

char ch[2];

};

Int main()

{

Swap_bytes sb;

Char temp;

sb.num = 15; // двоичный код: 0000 0000 0000 1111

cout << "Исходные байты: ";

disp_binary(sb.ch[1]);

cout << " ";

disp_binary(sb.ch[0]);

cout << "\n\n";

// Обмен байтов.

temp = sb.ch[0];

sb.ch[0] = sb.ch[1];

sb.ch[1] = temp;

cout << "Байты после перестановки: ";

disp_binary(sb.ch[1]);

cout << " ";

disp_binary(sb.ch[0]);

cout << "\n\n";

Return 0;

}

// Отображение битов, составляющих байт.

Void disp_binary(unsigned u)

{

Register int t;

for(t=128; t>0; t=t/2)

if(u & t) cout << "1 ";

else cout << "0 ";

}

При выполнении программа генерирует такие результаты.

Исходные байты: 0000 0000 0000 1111

Байты после перестановки: 0000 1111 0000 0000

В этой программе целочисленной переменной sb.num присваивается число 15.

Перестановка двух байтов, составляющих это значение, выполняется путем обмена двух

Символов, которые образуют массив ch. В результате старший и младший байты целочисленной







Date: 2016-07-25; view: 305; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию