Unia (programowanie) - Google

Unia (programowanie)

Z Wikipedii

Skocz do: nawigacji, szukaj

Unia - typ danych w niektórych niskopoziomowych językach programowania, jak C, lub asembler, grupujący wiele różnych sposobów interpretacji tego samego fragmentu pamięci. Odpowiednikiem unii w języku Pascal jest rekord z wariantami.

Unia jest podobna do struktury, jednak wszystkie pola zajmują ten sam obszar pamięci.

Przykładowo unia:

union nazwa_unii {
    char tablica_znakowa[4];
    int wartosc;
} u;

tworzy zmienną u, do której można mieć dostęp albo jako do liczby (u.wartosc), albo jako do tablicy znaków (u.tablica_znakowa).

Tego typu manewry są czasem przydatne w niskopoziomowym programowaniu. Użycie unii nie jest jednak zalecane w innych wypadkach, gdyż jest wybitnie wrażliwe na różnice w reprezentacji poszczególnych typów w pamięci. Ten sam program, używający unii może zupełnie inaczej działać w zależności od tego, czy liczby są zapisywane jako big endian, czy little endian i jaką mają długość w bajtach:

u.wartosc=0x44434241;

W u.tablica_znakowa znalazł się napis:

  • 'ABCD' w przypadku procesora Intel, kompilator 32-bitowy
  • 'AB' w przypadku procesora Intel, kompilator 16-bitowy dla DOSu
  • 'DCBA' w przypadku procesora Motorola,

[edytuj] Struktury jako pola unii

Elementami unii mogą być struktury, co czasem jest przydatne:

union liczba {
    struct {
        unsigned int a :8;
        unsigned int b :8;
        unsigned int c :8;
        unsigned int d :8;
    } rozbicie_na_bajty;

    struct {
        unsigned int a :16;
        unsigned int b :16;
    } rozbicie_na_slowa;

    unsigned int liczba;
};

[edytuj] Unie anonimowe

C++ dopuszcza tzw unie anonimowe w których nie ma ani nazwy unii, ani nazwy zmiennej:

union {
    int liczba;
    char znak;
};

Do pól takiej unii można dostawać się bezpośrednio używając ich nazw (np. liczba lub znak z przykładu powyżej). Czasem ten mechanizm jest stosowany przy umieszczaniu unii anonimowej jako pola struktury.


Bin Laden na święto Izraela
Będzie nowe nagranie szefa Al-Kaidy Osamy Bin Ladena. Tematem będzie 60 rocznica powstania Izraela - podała jedna ze amerykańskich stron internetowych monitorująca treści terrorystyczne. Nagranie ma ujrzeć światło dzienne w ciągu 72 godzin.
Rozmowy o tarczy na kamiennej ławeczce
- Zapadły pewne konkrety organizacyjne w sprawie tarczy antyrakietowej - poinformował Lech Kaczyński po spotkaniu z George'm W. Bushem w Jerozolimie. Prezydent "poskarżył się" też, że rozmowa, która dotyczyła także Gruzji, toczyła się przy lodowatym wietrze na kamiennej ławeczce.
Konflikt Bush - Obama z PolskÄ… w tle
Rozmawiać z terrorystami to tak, jakby próbować powstrzymać Hitlera przed atakiem na Polskę - tak George Bush podsumował zapowiedzi Baracka Obamy, że zamierza rozmawiać z przywódcami państw wrogich USA. Na dodatek zrobił to w Knesecie, w przemówieniu krytykującym politykę appeasmentu. Na odpowiedź Obamy nie trzeba było długo czekać.
PrzeproszÄ… za "polskie obozy koncentracyjne"
Minister Radosław Sikorski rozmawiał z brytyjskim ambasadorem w Polsce na temat publikacji północnoirlandzkiego "Tyrone Courier" - mówi tvn24.pl rzecznik MSZ Piotr Paszkowski. W środę gazeta wydrukowała relację z wizyty w "polskich obozach koncentracyjnych". Wydawca gazety zapewnił w rozmowie z dziennik.pl, że przeprosi Polaków za to stwierdzenie.
Zobacz Donalda Tuska na Machu Picchu
Zapierające dech w piersiach widoki, niezwykła architektura i serdeczne przyjęcie przez przez potomków Inków. Premier Donald Tusk razem z żoną Małgorzatą zwiedzał ruiny słynnego miasta Inków Machu Picchu.
Linki: Strona g³ówna