Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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; Нарушение авторских прав |