Unie w języku C

Unie są zaawansowanym elementem języka C, pozwalającym na efektywne zarządzanie pamięcią oraz umożliwiającym różne sposoby interpretacji tego samego fragmentu pamięci. Unia to specjalny typ danych, który pozwala na przechowywanie różnych typów danych w tym samym miejscu w pamięci. Rozmiar przydzielonej pamięci dla unii jest równy rozmiarowi największego składnika. To znaczy, że unia używa tej samej lokalizacji pamięci do przechowywania jednego z wielu możliwych typów danych, ale tylko jeden typ danych może być przechowywany w danej chwili. Wykorzystanie unii jest szczególnie przydatne w sytuacjach, gdy chcemy interpretować dane na więcej niż jeden sposób bez konieczności rezerwacji dodatkowej pamięci dla każdej interpretacji.

Przykład użycia unii

Zobaczmy teraz, jak możemy użyć unii w praktyce. Rozważmy unie, która może przechowywać albo integer (int), albo znak (char). Poniżej znajduje się przykład kodu w języku C, który demonstruje działanie unii, wraz z komentarzami po polsku.

#include <stdio.h>

// Definicja unii o nazwie myUnion
union myUnion {
    int myInt;
    char myChar;
};

int main() {
    // Deklaracja unii o nazwie testUnion
    union myUnion testUnion;

    // Przypisanie wartości do pola myInt
    testUnion.myInt = 65;
    printf("Value of myInt: %d\n", testUnion.myInt);
    
    // Przypisanie wartości do pola myChar
    testUnion.myChar = 'A';
    printf("Value of myChar: %c\n", testUnion.myChar);
    
    // Ponowne wypisanie wartości myInt po przypisaniu wartości do myChar
    printf("Value of myInt after assigning myChar: %d\n", testUnion.myInt);

    return 0;
}

W tym przykładzie zdefiniowaliśmy unię myUnion, która może przechowywać albo wartość typu int, albo wartość typu char. Następnie, w funkcji main, tworzymy zmienną testUnion typu myUnion i przypisujemy wartości do różnych pól tej unii. Najpierw przypisujemy wartość 65 do myInt i wyświetlamy ją. Potem przypisujemy wartość ‘A’ do myChar i ponownie wyświetlamy myInt. Widać, że wartość myInt została nadpisana przez myChar, ponieważ oba te pola dzielą tę samą lokalizację w pamięci.

Podsumowanie

Unie w języku C są potężnym narzędziem, które umożliwia efektywne wykorzystanie pamięci oraz dostarcza elastycznych sposobów na interpretację danych. Przez przechowywanie różnych typów danych w tej samej lokalizacji pamięci, unie pozwalają na oszczędność pamięci oraz zapewniają wygodny sposób na dostęp do danych w różnych formatach. Należy jednak pamiętać, że w danym momencie dostępna jest tylko jedna wartość przechowywana w unii, co wymaga ostrożności przy jej użyciu.

Scroll to Top