Razlika između strukture i unije u C

Što je Struktura?

Struktura je korisnički definiran tip podataka u programskom jeziku C koji kombinira logički povezane podatkovne stavke različitih tipova podataka.

Svi elementi strukture pohranjeni su na neprekidnim memorijskim lokacijama. Varijabla tipa strukture može pohraniti više od jedne podatkovne stavke različitih tipova podataka pod jednim imenom.

Što je Unija

Unija je korisnički definirana vrsta podataka, baš kao i struktura. Unija kombinira objekte različitih vrsta i veličina. Varijabla unije dodjeljuje memorijski prostor jednak prostoru za držanje najveće varijable unije. Omogućuje različitim vrstama objekata da dijele istu lokaciju.

Sintaksa deklariranja strukture

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

Struktura se deklarira pomoću ključne riječi “struct” i naziva strukture. Broj 1, broj 2, broj 3 su pojedinačni članovi strukture. Dio tijela završava točkom i zarezom (;).

Primjer strukture u C programiranju

#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;
}

U gornjem programu kreira se struktura pod nazivom student. Ova struktura ima tri podatkovna člana: 1) ime (string), 2) roll_no (cijeli broj) i 3) oznake (float).

Nakon toga se stvara strukturna varijabla sdt za pohranjivanje podataka o učeniku i njihov prikaz na zaslonu računala.

Izlaz:

Unesite sljedeće podatke:

Unesite ime učenika: James

Upiši broj učeničke liste: 21

Upiši ocjene učenika: 67

Podaci koje ste unijeli su:

Ime učenika: John

Učenička lista broj: 21

Ocjene učenika: 67.0

Sintaksa deklariranja unije

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

Unija se deklarira pomoću ključne riječi "unija" i naziva unije. Broj 1, broj 2, broj 3 su pojedinačni članovi sindikata. Dio tijela završava točkom i zarezom (;).

Primjer unije u C programiranju

#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;
}

Izlaz:

1101109601

20.199892

a

U gornjem programu možete vidjeti da su vrijednosti x i y oštećene. Samo varijabla ch ispisuje očekivani rezultat. To je zato što se u uniji memorijska lokacija dijeli između svih vrsta podataka članova.

Stoga će jedini podatkovni član čija je vrijednost trenutno pohranjena zauzeti prostor u memoriji. Vrijednost varijable ch je na kraju pohranjena, tako da je vrijednost ostatka varijable izgubljeno.

Struktura vs. Unija

Struktura vs. Unija
Struktura vs. Unija

Evo važne razlike između strukture i sindikata:

Struktura Unija
Za definiranje strukture možete koristiti ključnu riječ struct. Za definiranje unije možete koristiti ključnu riječ unija.
Svakom članu unutar strukture dodijeljena je jedinstvena memorijska lokacija. U uniji, memorijsku lokaciju dijele svi članovi podataka.
Promjena vrijednosti jednog podatkovnog člana neće utjecati na druge podatkovne članove u strukturi. Promjena vrijednosti jednog podatkovnog člana promijenit će vrijednost ostalih podatkovnih članova u uniji.
Omogućuje vam da inicijalizirate nekoliko članova odjednom. Omogućuje vam da inicijalizirate samo prvog člana unije.
Ukupna veličina strukture zbroj je veličine svakog podatkovnog člana. Ukupna veličina unije je veličina najvećeg podatkovnog člana.
Uglavnom se koristi za pohranu različitih vrsta podataka. Uglavnom se koristi za pohranjivanje jedne od mnogih vrsta podataka koje su dostupne.
Zauzima prostor za svakog člana zapisanog u unutarnjim parametrima. Zauzima prostor za član koji ima najveću veličinu zapisanu u unutarnjim parametrima.
Možete preuzeti bilo kojeg člana odjednom. U sindikatu možete pristupiti jednom po jednom članu.
Podržava fleksibilni niz. Ne podržava fleksibilni niz.

Prednosti strukture

Evo prednosti/prednosti korištenja strukture:

  • Strukture skupljaju više od jednog podatka o istoj temi zajedno na istom mjestu.
  • Korisno je kada želite prikupiti podatke sličnih tipova podataka i parametara poput imena, prezimena itd.
  • Vrlo ga je lako održavati jer možemo predstaviti cijeli zapis korištenjem jednog imena.
  • U strukturi, možemo proslijediti kompletan skup zapisa bilo kojoj funkciji pomoću jednog parametra.
  • Možete koristiti polje strukture za pohranu više zapisa sa sličnim vrstama.

Prednosti sindikata

Ovdje su prednosti/prednosti korištenja unije:

  • Zauzima manje memorije u usporedbi sa strukturom.
  • Kada koristite uniju, samo se posljednjoj varijabli može izravno pristupiti.
  • Unija se koristi kada morate koristiti istu memorijsku lokaciju za dva ili više podatkovnih članova.
  • Omogućuje vam čuvanje podataka samo jednog člana podataka.
  • Njegov dodijeljeni prostor jednak je maksimalnoj veličini podatkovnog člana.

Nedostaci strukture

Evo nedostataka/nedostataka korištenja strukture:

  • Ako složenost IT projekta prijeđe granice, njime postaje teško upravljati.
  • Promjena jedne strukture podataka u kodu zahtijeva promjene na mnogim drugim mjestima. Stoga je promjene teško pratiti.
  • Struktura je sporija jer zahtijeva prostor za pohranu svih podataka.
  • Možete dohvatiti bilo kojeg člana u trenutku u strukturi, dok možete pristupiti jednom po jednom članu u sindikatu.
  • Struktura zauzima prostor za svaki član zapisan u unutarnjim parametrima, dok unija zauzima prostor za član koji ima najveću veličinu zapisanu u unutarnjim parametrima.
  • Struktura podržava fleksibilni niz. Union ne podržava fleksibilni niz.

Nedostaci unije

Ovdje su mane/nedostaci korištenja unije:

  • Možete koristiti samo jednog člana sindikata odjednom.
  • Sve varijable unije ne mogu se inicijalizirati ili koristiti s različitim vrijednostima odjednom.
  • Sindikat dodjeljuje jedan zajednički skladišni prostor za sve svoje članove.

KLJUČNE RAZLIKE:

  • Svakom članu unutar strukture dodijeljena je jedinstvena memorijska lokacija, dok u uniji memorijsku lokaciju dijele svi članovi podataka.
  • Promjena vrijednosti jednog podatkovnog člana neće utjecati na druge podatkovne članove u strukturi, dok će promjena vrijednosti jednog podatkovnog člana promijeniti vrijednost ostalih podatkovnih članova u uniji.
  • Struktura se uglavnom koristi za pohranjivanje različitih tipova podataka, dok se unija uglavnom koristi za pohranjivanje jednog od mnogih tipova podataka.
  • U strukturi, možete dohvatiti bilo kojeg člana u isto vrijeme, s druge strane u uniji, možete pristupiti jednom članu u isto vrijeme.
  • Struktura podržava fleksibilni niz dok unija ne podržava fleksibilni niz.

Također provjerite naš C vodič za početnike:- Klikni ovdje

Dnevni bilten Guru99

Započnite dan s najnovijim i najvažnijim vijestima o umjetnoj inteligenciji koje vam donosimo upravo sada.