Struktuuri ja liidu erinevus

Lang L: none (table-of-contents):

Anonim

Mis on struktuur?

Struktuur on kasutaja määratletud andmetüüp C-programmeerimiskeeles, mis ühendab erinevate andmetüüpide loogiliselt seotud andmeüksused omavahel.

Kõik struktuuri elemendid salvestatakse külgnevatesse mälupaikadesse. Struktuuri tüübi muutujaga saab ühe nime alla salvestada rohkem kui ühe erineva tüüpi andmetega üksuse.

Selles õpetuses saate teada:

  • Mis on struktuur?
  • Mis on liit
  • Struktuuri deklareerimise süntaks
  • Struktuuri näide C-programmeerimises
  • Liidu deklareerimise süntaks
  • Liidu näide C-programmeerimises
  • Struktuur Vs. Liit
  • Struktuuri eelised
  • Liidu eelised
  • Struktuuri puudused
  • Liidu puudused

Mis on liit

Liit on kasutaja määratletud andmetüüp, täpselt nagu struktuur. Union ühendab eri tüüpi ja suurusega objekte. Liitmuutuja eraldab mäluruumi võrdse ruumiga liidu suurima muutuja hoidmiseks. See võimaldab erinevat tüüpi objektidel sama asukohta jagada.

Struktuuri deklareerimise süntaks

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

Struktuur deklareeritakse, kasutades struktuuri märksõna ja struktuuri nime. Number 1, number 2, number 3 on struktuuri üksikud liikmed. Kehaosa lõpetatakse semikooloniga (;).

Struktuuri näide C-programmeerimises

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

Ülaltoodud programmis luuakse struktuur nimega õpilane. Sellel struktuuril on kolm andmeliiget: 1) nimi (string), 2) roll_no (täisarv) ja 3) märgid (float).

Pärast seda luuakse struktuurimuutuja sdt õpilaste teabe salvestamiseks ja arvutiekraanil kuvamiseks.

Väljund:

Sisestage järgmine teave:

Sisestage õpilase nimi: James

Sisestage õpilase nimekirja number: 21

Sisestage õpilasemärgid: 67

Sisestatud teave on järgmine:

Õpilase nimi: John

Õpilase nimekirja number: 21

Õpilase hinded: 67,0

Liidu deklareerimise süntaks

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

Liit deklareeritakse, kasutades ametiühingu märksõna ja liidu nime. Number 1, number 2, number 3 on liidu üksikud liikmed. Kehaosa lõpetatakse semikooloniga (;).

Liidu näide C-programmeerimises

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

Väljund:

1101109601

20.199892

a

Ülaltoodud programmis näete, et x ja y väärtused rikutakse. Ainult muutuja ch prindib oodatava tulemuse. Selle põhjuseks on asjaolu, et ühenduses jagatakse mälu asukohta kõigi liikmete andmetüüpide vahel.

Seetõttu hõivab mäluruumi ainus andmeliige, kelle väärtus on praegu salvestatud. Lõpuks salvestati muutuja ch väärtus, seega kaotatakse ülejäänud muutujate väärtus.

Struktuur Vs. Liit

Siin on oluline erinevus struktuuri ja liidu vahel:

Struktuur Liit
Struktuuri määratlemiseks võite kasutada struktureeritud märksõna. Liidu määramiseks võite kasutada ameti märksõna.
Igale struktuuri liikmele määratakse ainulaadne mälupaik. Ühenduses jagavad mälu asukohta kõik andmeliikmed.
Ühe andmeliikme väärtuse muutmine ei mõjuta struktuuris teisi andmeliikmeid. Ühe andmeliikme väärtuse muutmine muudab teiste liidus olevate andmeliikmete väärtust.
See võimaldab teil lähtestada mitu liiget korraga. See võimaldab teil lähtestada ainult liidu esimest liiget.
Struktuuri kogumaht on iga andmeliikme suuruse summa. Liidu kogu suurus on suurima andmeliikme suurus.
Seda kasutatakse peamiselt mitmesuguste andmetüüpide salvestamiseks. Seda kasutatakse peamiselt ühe paljude olemasolevate andmetüüpide salvestamiseks.
See võtab ruumi iga sisemise parameetriga kirjutatud liikme jaoks. See võtab ruumi liikmele, kelle sisemised parameetrid on kõige suuremad.
Saate korraga tuua kõik liikmed. Liidus pääsete korraga juurde ühele liikmele.
See toetab paindlikku massiivi. See ei toeta paindlikku massiivi.

Struktuuri eelised

Siin on struktuuri kasutamise plussid / eelised:

  • Struktuurid koguvad sama teema kohta rohkem kui ühe teabe ühes ja samas kohas.
  • See on kasulik, kui soovite koguda andmeid sarnaste andmetüüpide ja parameetrite kohta, nagu eesnimi, perekonnanimi jne.
  • Seda on väga lihtne hooldada, kuna saame kogu nime esindada ühe nime abil.
  • Struktuuris võime ühe parameetri abil edastada täieliku kirjekomplekti mis tahes funktsioonile.
  • Struktuuri massiivi abil saate salvestada rohkem sarnaste tüüpidega kirjeid.

Liidu eelised

Siin on ametiühingu kasutamise plussid / eelised:

  • See võtab struktuuriga võrreldes vähem mälu.
  • Kui kasutate liitu, pääseb otse juurde ainult viimasele muutujale.
  • Liit kasutatakse juhul, kui peate kahe või enama andmeliikme jaoks kasutama sama mälukohta.
  • See võimaldab teil hoida ainult ühe andmeliikme andmeid.
  • Selle eraldatud ruum on võrdne andmeliikme maksimaalse suurusega.

Struktuuri puudused

Siin on struktuuri kasutamise miinused / puudused:

  • Kui IT-projekti keerukus ületab piiri, on seda raske hallata.
  • Ühe andmestruktuuri muutmine koodis nõuab muudatusi paljudes muudes kohtades. Seetõttu muutused muutuvad raskesti jälgitavaks.
  • Struktuur on aeglasem, kuna see nõuab kõigi andmete jaoks salvestusruumi.
  • Struktuuris saate kõik liikmed korraga kätte saada, samas kui liidus saate juurde pääseda ühele liikmele korraga.
  • Struktuur võtab ruumi iga liikme jaoks, mis on kirjutatud sisemistesse parameetritesse, samas kui liit võtab ruumi liikmele, kelle sisemised parameetrid on kõige suuremad.
  • Struktuur toetab paindlikku massiivi. Liit ei toeta paindlikku massiivi.

Liidu puudused

Siin on liidu kasutamise miinused / puudused:

  • Korraga saab kasutada ainult ühte ametiühingu liiget.
  • Kõiki liitmuutujaid ei saa initsialiseerida ega kasutada korraga erinevate väärtustega.
  • Liit määrab kõigile liikmetele ühe ühise salvestusruumi.

PÕHISED VAHED:

  • Igale struktuuri liikmele määratakse ainulaadne mälupaik, samas kui mälu asukohta jagavad kõik andmeliikmed.
  • Ühe andmeliikme väärtuse muutmine ei mõjuta struktuuris teisi andmeliikmeid, samas kui ühe andmeliikme väärtuse muutmine muudab teiste liidus olevate andmeliikmete väärtust.
  • Struktuuri kasutatakse peamiselt mitmesuguste andmetüüpide salvestamiseks, samas kui liitu kasutatakse peamiselt ühe paljudest andmetüüpidest.
  • Konstruktsioonis saate liidus korraga otsida ükskõik millise liikme korraga, pääsete juurde ühele liikmele korraga.
  • Struktuur toetab paindlikku massiivi, samas kui liit ei toeta paindlikku massiivi.