Kaj je struktura?
Struktura je uporabniško določen podatkovni tip v programskem jeziku C, ki združuje logično povezane podatkovne postavke različnih podatkovnih vrst.
Vsi elementi strukture so shranjeni na sosednjih pomnilniških mestih. Spremenljivka tipa strukture lahko pod enim imenom shrani več kot en element podatkov različnih vrst podatkov.
V tej vadnici boste izvedeli:
- Kaj je struktura?
- Kaj je Union
- Sintaksa prijave strukture
- Primer strukture v programiranju C
- Sintaksa Deklariranja Unije
- Primer programiranja Union in C
- Struktura Vs. Unije
- Prednosti strukture
- Prednosti zveze
- Pomanjkljivosti strukture
- Slabosti zveze
Kaj je Union
Union je uporabniško določen podatkovni tip, tako kot struktura. Union združuje predmete različnih vrst in velikosti. Spremenljivka union dodeli pomnilniški prostor, ki je enak prostoru, v katerem je največja spremenljivka unije. Različnim vrstam predmetov omogoča skupno rabo iste lokacije.
Sintaksa prijave strukture
struct [name of the structure]{type member1;type member2;type member3;};
Struktura se prijavi s ključno besedo "struct" in imenom strukture. Številka 1, številka 2, številka 3 so posamezni člani strukture. Del telesa se zaključi s podpičjem (;).
Primer strukture v programiranju C
#includestruct 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;}
V zgornjem programu je ustvarjena struktura, imenovana študent. Ta struktura ima tri podatkovne člane: 1) ime (niz), 2) roll_no (celo število) in 3) oznake (float).
Po tem se ustvari spremenljivka strukture sdt za shranjevanje informacij o študentu in njihovo prikazovanje na zaslonu računalnika.
Izhod:
Vnesite naslednje podatke:
Vnesite ime študenta: James
Vnesite številko študentske liste: 21
Vnesite študentske ocene: 67
Vneseni podatki so:
Ime študenta: John
Številka študentskega zbora: 21
Ocene študentov: 67,0
Sintaksa Deklariranja Unije
union [name of union]{type member1;type member2;type member3;};
Union se prijavi s ključno besedo "union" in imenom union. Številka 1, številka 2, številka 3 so posamezni člani sindikata. Del telesa se zaključi s podpičjem (;).
Primer programiranja Union in C
#includeunion 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;}
Izhod:
1101109601
20.199892
a
V zgornjem programu lahko vidite, da se vrednosti x in y poškodujeta. Samo spremenljivka ch natisne pričakovani rezultat. To je zato, ker je v spominu mesto pomnilnika v skupni rabi med vsemi tipi podatkov članov.
Zato bo edini podatkovni član, katerega vrednost je trenutno shranjena, zasedel pomnilniški prostor. Vrednost spremenljivke ch je bila nazadnje shranjena, zato se vrednost ostalih spremenljivk izgubi.
Struktura Vs. Unije
Tu je pomembna razlika med strukturo in zvezo:
Struktura | Unije |
Za definiranje strukture lahko uporabite ključno besedo struct. | Za določitev zveze lahko uporabite ključno besedo union. |
Vsakemu članu znotraj strukture je dodeljena edinstvena pomnilniška lokacija. | V povezavi si vsi člani podatkov delijo pomnilniško lokacijo. |
Sprememba vrednosti enega podatkovnega člana ne bo vplivala na druge podatkovne člane v strukturi. | Sprememba vrednosti enega podatkovnega člana bo spremenila vrednost drugih podatkovnih članov v zvezi. |
Omogoča inicializacijo več članov hkrati. | Omogoča vam inicijalizacijo samo prvega člana zveze. |
Skupna velikost strukture je vsota velikosti vsakega podatkovnega člana. | Skupna velikost zveze je velikost največjega podatkovnega člana. |
Uporablja se predvsem za shranjevanje različnih podatkovnih vrst. | Uporablja se predvsem za shranjevanje ene izmed številnih razpoložljivih vrst podatkov. |
Zavzema prostor za vsakega člana, zapisan z notranjimi parametri. | Zavzema prostor za člana z največjo velikostjo, zapisano v notranjih parametrih. |
Hkrati lahko pridobite katerega koli člana. | Do sindikata lahko dostopate naenkrat. |
Podpira prilagodljivo matriko. | Ne podpira prilagodljivega polja. |
Prednosti strukture
Tu so prednosti / prednosti uporabe strukture:
- Strukture na istem mestu zberejo več podatkov o istem predmetu.
- Koristno je, če želite zbrati podatke o podobnih vrstah podatkov in parametrih, kot so ime, priimek itd.
- Vzdrževanje je zelo enostavno, saj lahko z enim samim imenom predstavimo celoten zapis.
- V strukturi lahko z enim samim parametrom poljubni funkciji posredujemo celoten nabor zapisov.
- Z vrsto struktur lahko shranite več zapisov s podobnimi vrstami.
Prednosti zveze
Tukaj je nekaj prednosti / koristi za uporabo sindikata:
- V primerjavi s strukturo zaseda manj pomnilnika.
- Ko uporabljate union, je mogoče neposredno dostopati le do zadnje spremenljivke.
- Union se uporablja, kadar morate uporabiti isto mesto pomnilnika za dva ali več podatkovnih članov.
- Omogoča vam hrambo podatkov samo enega člana.
- Njegov dodeljeni prostor je enak največji velikosti podatkovnega člana.
Pomanjkljivosti strukture
Tu so slabosti / slabosti uporabe strukture:
- Če zapletenost IT projekta preseže mejo, ga je težko obvladati.
- Sprememba ene podatkovne strukture v kodi zahteva spremembe na mnogih drugih mestih. Zato je spremembam težko slediti.
- Struktura je počasnejša, ker zahteva prostor za shranjevanje vseh podatkov.
- V strukturi lahko naenkrat pridobite katerega koli člana, medtem ko lahko v sindikatu dostopate do enega člana naenkrat.
- Struktura zavzame prostor za vsakega člana, zapisanega z notranjimi parametri, medtem ko zveza zaseda prostor za člana, ki ima največjo velikost, zapisano v notranjih parametrih.
- Struktura podpira prilagodljivo matriko. Union ne podpira prilagodljivega polja.
Slabosti zveze
Tu so slabosti / pomanjkljivosti uporabe union:
- Hkrati lahko uporabite samo enega člana sindikata.
- Vseh spremenljivk združitve ni mogoče inicializirati ali uporabiti z različnimi vrednostmi hkrati.
- Union dodeli en skupni prostor za shranjevanje za vse svoje člane.
KLJUČNE RAZLIKE:
- Vsakemu članu znotraj strukture je dodeljena edinstvena pomnilniška lokacija, medtem ko je v pomnilniški lokaciji vsi podatkovni člani v skupni rabi.
- Sprememba vrednosti enega podatkovnega člana ne bo vplivala na druge podatkovne člane v strukturi, medtem ko bo sprememba vrednosti enega podatkovnega člana spremenila vrednost drugih podatkovnih članov v uniji.
- Struktura se v glavnem uporablja za shranjevanje različnih podatkovnih tipov, medtem ko se unija uporablja predvsem za shranjevanje enega od mnogih tipov podatkov.
- V strukturi lahko naenkrat pridobite katerega koli člana, na drugi strani pa lahko v sindikatu dostopate do enega člana naenkrat.
- Struktura podpira prilagodljivo matriko, medtem ko unija ne podpira fleksibilnega polja.