Struktura i Unia

Anonim

Zarówno struktura, jak i związki są zdefiniowanymi przez użytkownika typami danych w języku C i są koncepcyjnie takie same, ale nadal różnią się pod pewnymi względami, podobnie jak sposób przydzielania pamięci członkom. Są one zadeklarowane podobnie, ale działają inaczej. Pozwalają one użytkownikowi łączyć różne typy danych pod jedną nazwą. Podczas gdy oddzielna lokalizacja pamięci jest używana dla każdego elementu podczas deklarowania zmiennych struktury, różni członkowie zmiennej związanej dzielą tę samą lokalizację pamięci. Przyjrzyjmy się różnicy między strukturą a związkiem - to szczegół.

Co to jest struktura?

Struktura jest po prostu innym typem danych zdefiniowanym 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 powiązane ze sobą, które w przeciwnym razie nie będą miały sensu. Każdy członek w strukturze otrzymuje swoją własną lokalizację pamięci, dzięki czemu można go uzyskać i odzyskać w dowolnym momencie.

Struktura jest używana, gdy wiele danych wymaga grupowania jak katalog, który przechowuje informacje o wielu elementach w książce lub książce adresowej, która przechowuje wszystkie informacje o pojedynczym kontakcie - imię i nazwisko, adres, numer kontaktowy i tak dalej. Adres każdego członka będzie w porządku rosnącym, co oznacza, że ​​pamięć każdego elementu będzie rozpoczynać się od różnych wartości przesunięcia. Zmiana wartości jednego członka nie będzie miała żadnego 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, telefon i dane dotyczące wynagrodzenia w jednym miejscu. Odbywa się to za pomocą słowa kluczowego "struct", które następnie informuje kompilator, że struktura została zadeklarowana.

struct worker {

nazwa ciągu;

wiek sznurka;

telefon smyczkowy;

ciąg pensji;

} emp1, emp2;

W tym przypadku "pracownik" to nazwa struktury i dwie zmienne "emp1" i "emp2" są tworzone z typu "pracownik". Po nawiasach zamykających musi występować średnik (;).

Członkowie struktury mogą uzyskać dostęp do dwóch typów operatorów:

  1. Członek-operator
  2. Operator wskaźnika struktury

Czym jest Unia?

Jest to specjalny typ danych używany w języku C, który pozwala użytkownikowi przechowywać typy danych różnego rodzaju 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 "union". Członkowie nakładają na siebie pamięć w związku i są wystarczająco duże, aby zmieścić wszystkich członków.

Gdy zmienna jest powiązana z połączeniem, kompilator przydziela pamięć, biorąc pod uwagę rozmiar największej pamięci, więc rozmiar zrostu jest równy rozmiarowi największego elementu danych. Związek można zdefiniować z wieloma członkami, ale tylko jeden członek zawiera wartość w danym momencie czasu.

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. Złącze może być używane, gdy chcesz przechowywać coś, co jest jednym z kilku typów danych.

pracownik związku {

nazwa char [32];

int wiek;

płaca morska;

};

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

Różnica między strukturą a Unią

1. Słowo kluczowe

Słowo kluczowe "struct" służy do definiowania struktury, podczas gdy słowo kluczowe "union" służy do definiowania związku.

2. Przydzielanie pamięci

Oddzielna pamięć jest przydzielana członkom w strukturze, a członkowie mają różne adresy, które nie współużytkują pamięci. Z kolei unia dzieli tę samą przestrzeń pamięci dla wszystkich jej członków, więc przydzielana jest lokalizacja pamięci współużytkowanej.

3. Dostęp użytkownika

Związek przechowuje pojedynczą wartość na raz dla wszystkich swoich członków, umożliwiając dostęp tylko jednemu członkowi na raz. Chociaż wiele wartości może być przechowywanych w strukturze, dzięki czemu można uzyskać dostęp do dowolnej wartości elementu i pobrać ją w dowolnym momencie.

4. Rozmiar

Rozmiar struktury jest równy sumie wszystkich członków lub więcej, podczas gdy rozmiar związku jest równy rozmiarowi największego elementu rozmiaru.

5. Inicjalizacja

W strukturze kilku członków może zostać zainicjowanych naraz, podczas gdy w unii tylko pierwszy członek może zostać zainicjowany wartością swojego typu.

5. Wartość

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

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 dzielą pamięci w strukturze. Członkowie dzielą pamięć w unii.
Dowolny element może być pobrany w dowolnej chwili w strukturze. Tylko jeden członek może być dostępny w danym momencie w związku.
Kilku członków struktury można zainicjować jednocześnie. Tylko pierwszy członek może zostać zainicjowany.
Rozmiar struktury jest równy sumie wielkości każdego członka. 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 związki 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. O ile struktura jest zdefiniowana przez słowo kluczowe "struct", związek definiuje się za pomocą słowa kluczowego "union".
  • Każdy członek otrzymuje oddzielną lokalizację pamięci w strukturze, podczas gdy w zjednoczeniu całkowita przestrzeń pamięci jest równa największemu elementowi rozmiaru. Wszyscy członkowie dzielą tę samą pamięć w unii.
  • Dowolny element w dowolnej sekwencji może być dostępny w strukturze, podczas gdy w unii dostępna jest tylko ta zmienna, której wartość jest ostatnio przechowywana.