Różnica między strukturą a unią w C

Co to jest struktura?

Struktura to zdefiniowany przez użytkownika typ danych w języku programowania C, który łączy ze sobą logicznie powiązane elementy danych różnych typów.

Wszystkie elementy konstrukcji przechowywane są w sąsiadujących lokalizacjach pamięci. Zmienna typu struktury może przechowywać więcej niż jeden element danych różnych typów pod jedną nazwą.

Czym jest Unia

Unia jest typem danych zdefiniowanym przez użytkownika, podobnie jak struktura. Union łączy w sobie obiekty różnych typów i rozmiarów. Zmienna sumy przydziela przestrzeń pamięci równą przestrzeni do przechowywania największej zmiennej sumy. Umożliwia różnym typom obiektów współdzielenie tej samej lokalizacji.

Składnia deklarowania struktury

struct [name of the structure]
   {
       type member1;
       type member2;
       type member3;
   };

Strukturę deklaruje się za pomocą słowa kluczowego „struct” i nazwy struktury. Numer 1, numer 2, numer 3 to poszczególni członkowie struktury. Część ciała jest zakończona średnikiem (;).

Przykład struktury w programowaniu C

#include <stdio.h>
struct student {
    char name[60];
    int roll_no;
    float marks;
} sdt;
int main() {
    printf("Enter the following information:\n");
    printf("Enter student name: ");
    fgets(sdt.name, sizeof(sdt.name), stdin);
    printf("Enter student roll number: ");
    scanf("%d", & sdt. roll_no);
    printf("Enter students marks: ");
    scanf("%f", & sdt.marks);
    printf("The information you have entered is: \n");
    printf("Student name: ");
    printf("%s", sdt.name);
    printf("Student roll number: %d\n", sdt. roll_no);
    printf("Student marks: %.1f\n", sdt.marks);
    return 0;
}

W powyższym programie tworzona jest struktura zwana studentem. Struktura ta ma trzy elementy danych: 1) nazwę (string), 2) roll_no (liczba całkowita) i 3) znaki (float).

Następnie tworzona jest zmienna struktury sdt w celu przechowywania informacji o uczniach i wyświetlania ich na ekranie komputera.

Wyjście:

Wprowadź następujące informacje:

Wpisz imię i nazwisko ucznia: James

Wpisz numer indeksu ucznia: 21

Wprowadź oceny uczniów: 67

Informacje, które wprowadziłeś to:

Imię ucznia: John

Numer listy studentów: 21

Oceny uczniów: 67.0

Składnia deklarowania Unii

union [name of union]
    {
       type member1;
       type member2;
       type member3;
    };

Związek deklaruje się za pomocą słowa kluczowego „unia” i nazwy związku. Numer 1, numer 2, numer 3 to indywidualni członkowie związku. Część ciała jest zakończona średnikiem (;).

Przykład Unii w programowaniu C

#include <stdio.h>

union item
{
    int x;
    float y;
    char ch;
};

int main( )
{
    union item it;
    it.x = 12;
    it.y = 20.2;
    it.ch = 'a';
    
    printf("%d\n", it.x);
    printf("%f\n", it.y);
    printf("%c\n", it.ch);
    
    return 0;
}

Wyjście:

1101109601

20.199892

a

W powyższym programie widać, że wartości x i y ulegają uszkodzeniu. Tylko zmienna ch wypisuje oczekiwany wynik. Dzieje się tak dlatego, że w unii lokalizacja pamięci jest współdzielona pomiędzy wszystkimi składowymi typami danych.

Dlatego jedyny element danych, którego wartość jest aktualnie przechowywana, zajmie miejsce w pamięci. Wartość zmiennej ch została w końcu zapisana, więc wartość reszty zmienne zgubiony.

Struktura vs. Unia

Struktura vs. Unia
Struktura vs. Unia

Oto ważna różnica między strukturą a związkiem:

Structure Unia
Do zdefiniowania struktury można użyć słowa kluczowego struct. Do zdefiniowania unii można użyć słowa kluczowego union.
Każdemu członkowi struktury przypisana jest unikalna lokalizacja w pamięci. W unii lokalizacja pamięci jest współdzielona przez wszystkich członków danych.
Zmiana wartości jednego elementu danych nie będzie miała wpływu na inne elementy danych w strukturze. Zmiana wartości jednego elementu danych spowoduje zmianę wartości innych elementów danych w unii.
Umożliwia inicjalizację kilku członków jednocześnie. Umożliwia inicjalizację tylko pierwszego członka unii.
Całkowity rozmiar struktury jest sumą rozmiaru każdego elementu danych. Całkowity rozmiar unii to rozmiar największego elementu danych.
Służy głównie do przechowywania różnych typów danych. Służy głównie do przechowywania jednego z wielu dostępnych typów danych.
Zajmuje miejsce dla każdego elementu zapisanego w parametrach wewnętrznych. Zajmuje miejsce dla elementu o największym rozmiarze zapisanym w parametrach wewnętrznych.
Możesz odzyskać dowolnego członka na raz. Możesz uzyskać dostęp do jednego członka na raz w związku.
Obsługuje elastyczną tablicę. Nie obsługuje elastycznej tablicy.

Zalety konstrukcji

Oto zalety/korzyści korzystania ze struktury:

  • Struktury gromadzą więcej niż jedną porcję danych na ten sam temat w tym samym miejscu.
  • Jest to przydatne, gdy chcesz zebrać dane o podobnych typach danych i parametrach, takich jak imię, nazwisko itp.
  • Jest bardzo łatwy w utrzymaniu, ponieważ możemy reprezentować cały rekord za pomocą jednej nazwy.
  • W strukturze możemy przekazać pełny zestaw rekordów do dowolnej funkcji za pomocą jednego parametru.
  • Możesz użyć struktury tablicy, aby przechowywać więcej rekordów o podobnych typach.

Zalety unii

Oto zalety/korzyści korzystania z unii:

  • Zajmuje mniej pamięci w porównaniu do struktury.
  • Kiedy używasz unii, możesz uzyskać bezpośredni dostęp tylko do ostatniej zmiennej.
  • Unia jest używana, gdy musisz użyć tej samej lokalizacji pamięci dla dwóch lub więcej elementów danych.
  • Umożliwia przechowywanie danych tylko jednego członka danych.
  • Przydzielona mu przestrzeń jest równa maksymalnemu rozmiarowi elementu danych.

Wady konstrukcji

Oto wady/wady korzystania ze struktury:

  • Jeśli złożoność projektu informatycznego przekroczy określone granice, staje się on trudny do zarządzania.
  • Zmiana jednej struktury danych w kodzie powoduje konieczność zmian w wielu innych miejscach. Dlatego zmiany stają się trudne do śledzenia.
  • Struktura jest wolniejsza, ponieważ wymaga miejsca na przechowywanie wszystkich danych.
  • Możesz pobrać dowolnego członka naraz w strukturze, podczas gdy w związku możesz uzyskać dostęp do jednego członka na raz.
  • Struktura zajmuje miejsce dla każdego elementu zapisanego w parametrach wewnętrznych, podczas gdy unia zajmuje miejsce dla elementu o największym rozmiarze zapisanym w parametrach wewnętrznych.
  • Struktura obsługuje elastyczną tablicę. Union nie obsługuje elastycznej tablicy.

Wady zjednoczenia

Oto wady/wady korzystania z unii:

  • Jednocześnie możesz używać tylko jednego członka związku.
  • Wszystkie zmienne unii nie mogą być inicjowane ani używane z różnymi wartościami jednocześnie.
  • Związek przydziela wszystkim swoim członkom jedną wspólną przestrzeń magazynową.

KLUCZOWE RÓŻNICE:

  • Każdemu członowi struktury przypisana jest unikalna lokalizacja pamięci, podczas gdy w unii lokalizacja pamięci jest współdzielona przez wszystkich członków danych.
  • Zmiana wartości jednego elementu danych nie wpłynie na inne elementy danych w strukturze, podczas gdy zmiana wartości jednego elementu danych spowoduje zmianę wartości innych elementów danych w unii.
  • Struktura służy głównie do przechowywania różnych typów danych, podczas gdy unia służy głównie do przechowywania jednego z wielu typów danych.
  • W strukturze możesz odzyskać dowolnego członka na raz, z drugiej strony w unii możesz uzyskać dostęp do jednego członka na raz.
  • Struktura obsługuje elastyczną tablicę, podczas gdy unia nie obsługuje elastycznej tablicy.

Sprawdź także nasz samouczek C dla początkujących: - Kliknij tutaj

Codzienny biuletyn Guru99

Rozpocznij dzień od najnowszych i najważniejszych wiadomości na temat sztucznej inteligencji, dostarczanych już teraz.