Erinevus struktuuri ja liidu vahel C-s

Mis on struktuur?

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

Kõik struktuurielemendid on salvestatud külgnevatesse mälukohtadesse. Struktuuritüübi muutuja võib ühe nime all salvestada rohkem kui ühe erinevat tüüpi andmeüksuse.

Mis on Liit

Liit on kasutaja määratud andmetüüp, nagu struktuur. Liit kombineerib erinevat tüüpi ja suurusega esemeid. Ühenduse muutuja eraldab mäluruumi, mis on võrdne liidu suurima muutuja hoidmiseks mõeldud ruumiga. See võimaldab erinevat tüüpi objektidel jagada sama asukohta.

Struktuuri deklareerimise süntaks

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

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

Näide struktuurist C-programmeerimises

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

Ü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 õpilase teabe salvestamiseks ja arvutiekraanil kuvamiseks struktuurimuutuja sdt.

Väljund:

Sisestage järgmine teave:

Sisestage õpilase nimi: James

Sisestage õpilase nimekirja number: 21

Sisestage õpilaste hinded: 67

Teie sisestatud teave on:

Õpilase nimi: John

Õpilase nimekirja number: 21

Õpilaste hinded: 67.0

Liidu deklareerimise süntaks

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

Liidu deklareerimiseks kasutatakse märksõna "liit" ja ametiühingu nime. Number 1, number 2, number 3 on ametiühingu üksikliikmed. Kehaosa lõpetatakse semikooloniga (;).

Näide liidust C-programmeerimises

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

Väljund:

1101109601

20.199892

a

Ülaltoodud programmis näete, et x ja y väärtused rikutakse. Ainult muutuja ch prindib oodatud tulemuse. Põhjus on selles, et liidus jagatakse mälu asukoht kõigi liikmete andmetüüpide vahel.

Seetõttu võtab mäluruumi ainus andmeliige, mille väärtus on praegu salvestatud. Muutuja ch väärtus salvestati lõpuks, seega ka ülejäänud osa väärtus muutujad on kadunud.

Struktuur vs. liit

Struktuur vs. liit
Struktuur vs. liit

Siin on oluline erinevus struktuuri ja liidu vahel:

struktuur Liit
Struktuuri määratlemiseks saate kasutada märksõna struct. Ametiühingu määratlemiseks saate kasutada ametiühingu märksõna.
Igale struktuuri liikmele on määratud ainulaadne mälukoht. Ühenduses jagavad mälu asukohta kõik andmeliikmed.
Ühe andmeliikme väärtuse muutmine ei mõjuta struktuuri teisi andmeliikmeid. Ühe andmeliikme väärtuse muutmine muudab ühenduse teiste andmeliikmete väärtust.
See võimaldab teil initsialiseerida mitu liiget korraga. See võimaldab teil initsialiseerida ainult liidu esimest liiget.
Struktuuri kogusuurus on iga andmeliikme suuruse summa. Liidu kogusuurus on suurima andmeliikme suurus.
Seda kasutatakse peamiselt erinevate andmetüüpide salvestamiseks. Seda kasutatakse peamiselt ühe paljudest saadaolevatest andmetüüpidest salvestamiseks.
See võtab ruumi iga sisemiste parameetritega kirjutatud liikme jaoks. See võtab ruumi liikme jaoks, mille siseparameetritesse on kirjutatud suurim suurus.
Saate tuua iga liikme korraga. Liitu pääsete korraga ühele liikmele.
See toetab paindlikku massiivi. See ei toeta paindlikku massiivi.

Struktuuri eelised

Siin on struktuuri kasutamise plussid / eelised:

  • Struktuurid koguvad ühte kohta sama teema kohta rohkem kui ühe andmeid.
  • See on kasulik, kui soovite koguda sarnaste andmetüüpide ja parameetrite andmeid, nagu eesnimi, perekonnanimi jne.
  • Seda on väga lihtne hooldada, kuna saame esitada kogu kirje ühe nime kasutades.
  • Struktuuris saame ühe parameetri abil edastada täieliku kirjete komplekti mis tahes funktsioonile.
  • Saate kasutada struktuurimassiivi, et salvestada rohkem sarnast tüüpi kirjeid.

Liidu eelised

Siin on liidu kasutamise plussid/kasud:

  • See võtab struktuuriga võrreldes vähem mälu.
  • Ühenduse kasutamisel pääseb otse juurde ainult viimasele muutujale.
  • Ühendust kasutatakse siis, kui peate kasutama sama mälukohta kahe või enama andmeliikme jaoks.
  • See võimaldab teil hoida ainult ühe andmeliikme andmeid.
  • Sellele eraldatud ruum on võrdne andmeliikme maksimaalse suurusega.

Struktuuri puudused

Siin on struktuuri kasutamise miinused / puudused:

  • Kui IT-projekti keerukus ületab piiri, muutub seda raskeks juhtida.
  • Ühe andmestruktuuri muutmine koodis nõuab muudatusi paljudes teistes kohtades. Seetõttu on muutusi raske jälgida.
  • Struktuur on aeglasem, kuna see nõuab kõigi andmete jaoks salvestusruumi.
  • Struktuuris saate hankida kõik liikmed korraga, samas kui liidus pääsete juurde ühele liikmele korraga.
  • Struktuur võtab ruumi iga sisemiste parameetritega kirjutatud liikme jaoks, samas kui liit võtab ruumi liikme jaoks, millel on sisemistes parameetrites kirjutatud suurim suurus.
  • Struktuur toetab paindlikku massiivi. Liit ei toeta paindlikku massiivi.

Liidu miinused

Siin on liidu kasutamise miinused / puudused:

  • Korraga saate kasutada ainult ühte ametiühinguliiget.
  • Kõiki liitmuutujaid ei saa korraga initsialiseerida ega kasutada muutuvate väärtustega.
  • Liit määrab kõigile oma liikmetele ühe ühise laoruumi.

PEAMISED ERINEVUSED:

  • Igale struktuuri liikmele on määratud ainulaadne mälukoht, samas kui liidus jagavad mälukohta kõik andmeliikmed.
  • Ühe andmeliikme väärtuse muutmine ei mõjuta teisi andmeliikmeid struktuuris, samas kui ühe andmeliikme väärtuse muutmine muudab ühenduse teiste andmeliikmete väärtust.
  • Struktuuri kasutatakse peamiselt erinevate andmetüüpide salvestamiseks, samas kui ühendust kasutatakse peamiselt ühe paljudest andmetüüpidest salvestamiseks.
  • Struktuuris saate hankida kõik liikmed korraga, samas kui liidus pääsete juurde ühele liikmele korraga.
  • Struktuur toetab paindlikku massiivi, samas kui liit ei toeta paindlikku massiivi.

Vaadake ka meie C-õpetust algajatele: - Kliki siia