Struktūros ir sąjungos skirtumas

Kas yra struktūra?

Struktūra yra vartotojo apibrėžtas duomenų tipas C programavimo kalba, kuris sujungia logiškai susijusius skirtingų tipų duomenų elementus.

Visi struktūros elementai yra saugomi gretimose atminties vietose. Struktūros tipo kintamasis gali laikyti daugiau nei vieną skirtingų tipų duomenų elementą viename pavadinime.

Šioje pamokoje sužinosite:

  • Kas yra struktūra?
  • Kas yra Sąjunga
  • Deklaruojančios struktūros sintaksė
  • C programavimo struktūros pavyzdys
  • Sąjungos deklaravimo sintaksė
  • Sąjungos pavyzdys programuojant C
  • Struktūra, palyginti su Sąjunga
  • Struktūros pranašumai
  • Sąjungos privalumai
  • Struktūros trūkumai
  • Unijos trūkumai

Kas yra Sąjunga

„Union“ yra vartotojo apibrėžtas duomenų tipas, kaip ir struktūra. „Union“ sujungia skirtingų tipų ir dydžių objektus. „Union“ kintamasis skiria atminties plotą, lygų erdvei, kurioje telpa didžiausias unijos kintamasis. Tai leidžia skirtingų tipų objektams dalytis ta pačia vieta.

Deklaruojančios struktūros sintaksė

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

Struktūra deklaruojama naudojant „struct“ raktinį žodį ir struktūros pavadinimą. Skaičius 1, numeris 2, skaičius 3 yra atskiri struktūros nariai. Kūno dalis nutraukiama kabliataškiu (;).

C programavimo struktūros pavyzdys

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

Pirmiau pateiktoje programoje sukurta struktūra, vadinama studentu. Šioje struktūroje yra trys duomenų nariai: 1) vardas (eilutė), 2) roll_no (sveikasis skaičius) ir 3) ženklai (float).

Po to sukuriamas struktūros kintamasis sdt, skirtas studentų informacijai saugoti ir rodyti kompiuterio ekrane.

Išvestis:

Įveskite šią informaciją:

Įveskite studento vardą: Jamesas

Įveskite studento sąrašo numerį: 21

Įveskite studento pažymius: 67

Įvesta informacija yra:

Studentų vardas: Jonas

Studentų sąrašo numeris: 21

Studentų įvertinimai: 67,0

Sąjungos deklaravimo sintaksė

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

Sąjunga deklaruojama naudojant „unijos“ raktinį žodį ir sąjungos pavadinimą. Skaičius 1, numeris 2, numeris 3 yra atskiri sąjungos nariai. Kūno dalis nutraukiama kabliataškiu (;).

Sąjungos pavyzdys programuojant C

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

Išvestis:

1101109601

199892 20 20

a

Pirmiau pateiktoje programoje galite pamatyti, kad x ir y reikšmės sugadinamos. Tik kintamasis ch atspausdina laukiamą rezultatą. Taip yra todėl, kad susivienijus atminties vieta yra padalijama visiems nario duomenų tipams.

Todėl vienintelis duomenų narys, kurio vertė šiuo metu yra saugoma, užims atminties vietą. Pagaliau kintamojo ch vertė buvo išsaugota, todėl likusių kintamųjų vertė prarandama.

Struktūra, palyginti su Sąjunga

Čia yra svarbus skirtumas tarp struktūros ir sąjungos:

Struktūra Sąjunga
Norėdami apibrėžti struktūrą, galite naudoti struktūrinį raktinį žodį. Norėdami apibrėžti sąjungą, galite naudoti sąjungos raktinį žodį.
Kiekvienam struktūros nariui priskiriama unikali atminties vieta. Sąjungoje atminties vieta dalijasi visi duomenų nariai.
Vieno duomenų nario vertės pakeitimas neturės įtakos kitiems duomenų nariams struktūroje. Pakeitus vieno duomenų nario vertę, pasikeis kitų sąjungos duomenų narių vertė.
Tai leidžia jums inicijuoti kelis narius vienu metu. Tai leidžia jums inicijuoti tik pirmąjį sąjungos narį.
Bendras struktūros dydis yra kiekvieno duomenų nario dydžio suma. Bendras sąjungos dydis yra didžiausio duomenų nario dydis.
Jis daugiausia naudojamas įvairių tipų duomenims saugoti. Jis daugiausia naudojamas saugoti vieną iš daugelio galimų duomenų tipų.
Tai užima vietą kiekvienam nariui, parašytam vidiniais parametrais. Jis užima vietą nariui, kurio dydis yra didžiausias, parašytas vidiniais parametrais.
Vienu metu galite gauti bet kurį narį. Sąjungoje vienu metu galite prisijungti prie vieno nario.
Jis palaiko lanksčią masyvą. Tai nepalaiko lanksčios masyvo.

Struktūros pranašumai

Čia yra privalumai / pranašumai naudojant struktūrą:

  • Struktūros surenka daugiau nei vieną duomenų apie tą patį objektą kartu toje pačioje vietoje.
  • Tai naudinga, kai norite surinkti panašių duomenų tipų ir parametrų, tokių kaip vardas, pavardė ir kt., Duomenis.
  • Tai labai lengva prižiūrėti, nes mes galime atvaizduoti visą įrašą naudodami vieną vardą.
  • Pagal struktūrą galime perduoti visą įrašų rinkinį bet kuriai funkcijai naudodami vieną parametrą.
  • Norėdami saugoti daugiau įrašų su panašiais tipais, galite naudoti struktūros masyvą.

Sąjungos privalumai

Čia yra privalumai / privalumai naudojant sąjungą:

  • Tai užima mažiau atminties, palyginti su struktūra.
  • Kai naudojate sąjungą, galima tiesiogiai pasiekti tik paskutinį kintamąjį.
  • „Union“ naudojama, kai dviem ar daugiau duomenų narių turite naudoti tą pačią atminties vietą.
  • Tai leidžia jums laikyti tik vieno duomenų nario duomenis.
  • Jam skirta erdvė yra lygi maksimaliam duomenų nario dydžiui.

Struktūros trūkumai

Čia yra trūkumai / trūkumai naudojant struktūrą:

  • Jei IT projekto sudėtingumas viršija ribą, jį sunku valdyti.
  • Pakeitus vienos kodo duomenų struktūrą, reikia atlikti pakeitimus daugelyje kitų vietų. Todėl pokyčius sunku atsekti.
  • Struktūra yra lėtesnė, nes jai reikalinga vieta visiems duomenims.
  • Galite paimti bet kurį narį vienu metu struktūroje, o sąjungoje galite prieiti prie vieno nario vienu metu.
  • Struktūra užima vietą kiekvienam nariui, parašytam vidiniais parametrais, o sąjunga užima vietą nariui, kurio vidiniais parametrais parašytas didžiausias dydis.
  • Struktūra palaiko lanksčią masyvą. Sąjunga nepalaiko lanksčios masyvo.

Unijos trūkumai

Čia yra trūkumų / trūkumų, susijusių su sąjungos naudojimu:

  • Vienu metu galite naudoti tik vieną sąjungos narį.
  • Visų sąjungos kintamųjų negalima inicijuoti ar naudoti su skirtingomis reikšmėmis vienu metu.
  • „Union“ priskiria vieną bendrą saugojimo vietą visiems jos nariams.

PAGRINDINIAI SKIRTUMAI:

  • Kiekvienam struktūros nariui priskiriama unikali atminties vieta, o sujungiant atminties vietą dalijasi visi duomenų nariai.
  • Vieno duomenų nario vertės pakeitimas neturės įtakos kitiems duomenų nariams struktūroje, o pakeitus vieno duomenų nario vertę - kitų sąjungoje esančių duomenų narių vertė.
  • Struktūra daugiausia naudojama įvairių tipų duomenims saugoti, o sąjunga - vienam iš daugelio duomenų tipų.
  • Pagal struktūrą galite paimti bet kurį narį vienu metu, kita vertus, sąjungoje, galite prieiti prie vieno nario vienu metu.
  • Struktūra palaiko lanksčią masyvą, o sąjunga nepalaiko lanksčios masyvo.

Įdomios straipsniai...