Różnica między strukturą a połączeniem

Zarówno struktura, jak i unia są typami danych zdefiniowanymi przez użytkownika w języku C i są koncepcyjnie takie same, jednak nadal różnią się one pod pewnymi względami, jak sposób przydzielania pamięci dla ich członków. Są zadeklarowane podobnie, ale działają inaczej. Pozwalają użytkownikowi łączyć różne typy danych pod jedną nazwą. Podczas gdy deklarowana jest zmienna struktury, dla każdego elementu używana jest osobna lokalizacja pamięci, różni członkowie zmiennej unii mają tę samą lokalizację pamięci. Przeanalizujmy różnicę między strukturą a związkiem jest szczegółowość.

Co to jest struktura?

Struktura to po prostu kolejny typ danych zdefiniowany przez użytkownika w C, który pozwala użytkownikowi łączyć różne typy danych w jeden typ w bloku pamięci. Struktura może zawierać zarówno proste, jak i złożone typy danych, które nie są ze sobą powiązane. Każdy element w strukturze otrzymuje własną lokalizację pamięci, aby można było uzyskać do niej dostęp w dowolnym momencie.

Struktura jest używana, gdy wiele danych wymaga grupowania, np. Katalog przechowujący informacje o wielu członkach w książce lub książka adresowa, która przechowuje wszystkie informacje o jednym kontakcie - imię i nazwisko, adres, numer kontaktowy itd. Adres każdego elementu będzie w porządku rosnącym, co oznacza, że ​​pamięć każdego elementu rozpocznie się przy różnych wartościach przesunięcia. Zmiana wartości jednego członka nie będzie miała wpływu na innych członków.

Słowo kluczowe „struct” służy do definiowania struktury różnych typów danych pod jedną nazwą. Na przykład, jeśli chcesz utworzyć bazę danych pracowników, musisz przechowywać imię i nazwisko pracownika, wiek, numer telefonu i szczegóły dotyczące wynagrodzeń w jednym podmiocie. Odbywa się to za pomocą słowa kluczowego „struct”, które następnie informuje kompilator, że struktura została zadeklarowana.

pracownik struktury

nazwa ciągu;

wiek sznurka;

telefon sznurkowy;

pensja sznurkowa;

emp1, emp2;

Tutaj „pracownik” to nazwa struktury i tworzone są dwie zmienne „emp1” i „emp2” typu „pracownik”. Po nawiasach zamykających musi znajdować się średnik (;).

Do elementów struktury mogą mieć dostęp dwa typy operatorów:

  1. Członek operatora
  2. Operator wskaźnika struktury

Czym jest Unia?

Jest to specjalny typ danych używany w C, który pozwala użytkownikowi przechowywać różnego rodzaju dane w tej samej lokalizacji pamięci. Związek jest dość podobny do struktury i można go zdefiniować, zastępując słowo kluczowe „struct” słowem kluczowym „związek”. Członkowie nakładają się na siebie w związku i jest wystarczająco duży, aby zmieścić wszystkich swoich członków.

Gdy zmienna jest powiązana ze związkiem, kompilator przydziela pamięć, biorąc pod uwagę rozmiar największej pamięci, więc rozmiar związku jest równy rozmiarowi największego elementu danych. Związek można zdefiniować z wieloma elementami, ale tylko jeden element zawiera wartość w danym momencie.

Adres jest taki sam dla wszystkich członków związku, co oznacza, że ​​każdy członek zaczyna od tej samej wartości przesunięcia. A zmiana wartości jednego członka wpłynie na wartości innych członków. Łącznika można użyć, gdy chcesz przechowywać coś, co jest jednym z kilku typów danych.

pracownik związku

nazwa char [32];

wiek;

płaca zmienna;

;

Tutaj słowo kluczowe „związek” definiuje związek, który jest dość podobny do deklaracji struktury. Zmienna może przechowywać wartość ciągu będącą „imieniem pracownika”, liczbą całkowitą będącą „wiekiem pracownika” lub liczbą zmiennoprzecinkową reprezentującą „wynagrodzenie pracownika”.

Różnica między strukturą a połączeniem

1. Słowo kluczowe

Słowo kluczowe „struct” służy do definiowania struktury, natomiast słowo kluczowe „union” służy do definiowania związku.

2. Przydział pamięci

Osobna przestrzeń pamięci jest przeznaczona dla członków w strukturze, a członkowie mają różne adresy, które nie współużytkują pamięci. Z drugiej strony związek dzieli tę samą przestrzeń pamięci dla wszystkich swoich członków, więc przydzielona jest lokalizacja pamięci współdzielonej.

3. Dostęp członka

Związek przechowuje pojedynczą wartość na raz dla wszystkich swoich członków, udostępniając dostęp tylko jednemu członkowi na raz. Chociaż w strukturze można przechowywać wiele wartości, aby w każdej chwili można było uzyskać dostęp do dowolnej wartości elementu i ją odzyskać.

4. Rozmiar

Rozmiar struktury jest równy sumie wielkości wszystkich elementów lub więcej, podczas gdy rozmiar związku jest równy rozmiarowi elementu o największym rozmiarze.

5. Inicjalizacja

W strukturze można zainicjować kilka elementów naraz, podczas gdy w unii tylko pierwszy element może zostać zainicjowany wartością tego typu.

5. Wartość

Struktura może przechowywać różne wartości wszystkich elementów, a zmiana wartości jednego elementu nie będzie miała żadnego wpływu na wartości innych elementów. Podczas gdy związek przechowuje tę samą wartość dla wszystkich swoich członków, a zmiana wartości jednego członka wpłynie na wartość drugiego.

Struktura a Unia

Struktura Unia
Słowo kluczowe Struct służy do definiowania struktury. Słowo kluczowe Unii służy do definiowania związku.
Członkowie nie współużytkują pamięci w strukturze. Członkowie dzielą przestrzeń pamięci w związku.
Dowolny element członkowski można odzyskać w dowolnym momencie w strukturze. W związku może być dostępny tylko jeden członek naraz.
Jednocześnie można zainicjować kilku członków struktury. Tylko pierwszy członek może zostać zainicjowany.
Rozmiar struktury jest równy sumie wielkości każdego elementu. Rozmiar związku jest równy rozmiarowi największego członka.
Zmiana wartości jednego członka nie wpłynie na wartość innego. Zmiana wartości jednego elementu wpłynie na wartości innych elementów.
Przechowuje różne wartości dla wszystkich członków. Przechowuje tę samą wartość dla wszystkich członków.

streszczenie

  • Zarówno struktura, jak i unia są zdefiniowanymi przez użytkownika typami danych w C, które są funkcjonalnie i koncepcyjnie takie same, ale różnią się pod pewnymi względami.
  •  Oba zawierają zmienne różnych typów danych, ale używają tej samej składni do deklarowania zmiennych i uzyskiwania dostępu do elementów. Podczas gdy struktura jest definiowana przez słowo kluczowe „struct”, związek jest definiowany przez słowo kluczowe „union”.
  • Każdy element otrzymuje osobną lokalizację pamięci w strukturze, podczas gdy w związku całkowita przestrzeń pamięci jest równoważna elementowi największego rozmiaru. Wszyscy członkowie dzielą tę samą przestrzeń pamięci w związku.
  • Dostęp do dowolnego elementu w dowolnej sekwencji można uzyskać w strukturze, podczas gdy w unii można uzyskać dostęp tylko do tej zmiennej, której wartość jest ostatnio przechowywana.