Mikä on rakenne?
Rakenne on käyttäjän määrittelemä tietotyyppi C-ohjelmointikielellä, joka yhdistää loogisesti liittyvät erilaisten tietotyyppien tiedot.
Kaikki rakenneelementit on tallennettu vierekkäisiin muistipaikkoihin. Rakennetyyppimuuttuja voi tallentaa useampaa kuin yhtä erilaisten tietotyyppien tietokohtaa yhteen nimeen.
Tässä opetusohjelmassa opit:
- Mikä on rakenne?
- Mikä on unioni
- Rakenteen ilmoittamisen syntakse
- Esimerkki C-ohjelmoinnin rakenteesta
- Unionin julistamisen syntaksi
- Esimerkki unionista C-ohjelmoinnissa
- Rakenne vs. liitto
- Rakenteen edut
- Unionin edut
- Rakenteen haitat
- Liiton haitat
Mikä on unioni
Union on käyttäjän määrittelemä tietotyyppi, aivan kuten rakenne. Union yhdistää erityyppisiä ja -kokoisia esineitä. Unionimuuttuja varaa muistitilan yhtä suureksi kuin tilaa suurimman muuttujan pitämiselle. Sen avulla erityyppiset kohteet voivat jakaa saman sijainnin.
Rakenteen ilmoittamisen syntakse
struct [name of the structure]{type member1;type member2;type member3;};
Rakenne ilmoitetaan käyttämällä "struct" avainsanaa ja rakenteen nimeä. Numero 1, numero 2, numero 3 ovat yksittäisiä rakenteen jäseniä. Runko-osa on erotettu puolipisteellä (;).
Esimerkki C-ohjelmoinnin rakenteesta
#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;}
Yllä olevassa ohjelmassa luodaan rakenne nimeltä opiskelija. Tässä rakenteessa on kolme datajäsentä: 1) nimi (merkkijono), 2) roll_no (kokonaisluku) ja 3) merkit (float).
Tämän jälkeen luodaan rakennemuuttuja sdt, joka tallentaa opiskelijatietoja ja näyttää ne tietokoneen näytöllä.
Tuotos:
Syötä seuraavat tiedot:
Kirjoita opiskelijan nimi: James
Anna opiskelijan luettelonumero: 21
Anna opiskelijan arvosanat: 67
Antamasi tiedot ovat:
Opiskelijan nimi: John
Opiskelijan luettelonumero: 21
Opiskelijoiden arvosanat: 67,0
Unionin julistamisen syntaksi
union [name of union]{type member1;type member2;type member3;};
Unioni ilmoitetaan käyttämällä "unioni" -avainsanaa ja liiton nimeä. Numero 1, numero 2, numero 3 ovat liiton yksittäisiä jäseniä. Runko-osa on erotettu puolipisteellä (;).
Esimerkki unionista C-ohjelmoinnissa
#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;}
Tuotos:
1101109601
20.199892
a
Yllä olevassa ohjelmassa näet, että x: n ja y: n arvot vioittuvat. Vain muuttuja ch tulostaa odotetun tuloksen. Se johtuu siitä, että muistissa muistin sijainti jaetaan kaikkien jäsentietotyyppien kesken.
Siksi ainoa datajäsen, jonka arvo on tällä hetkellä tallennettu, vie muistitilaa. Muuttujan ch arvo tallennettiin vihdoin, joten muiden muuttujien arvo menetetään.
Rakenne vs. liitto
Tässä on tärkeä ero rakenteen ja liiton välillä:
Rakenne | liitto |
Voit määrittää rakenteen avainsanalla strukt. | Voit määrittää liiton avainsanan avulla. |
Jokaiselle jäsenelle rakenteessa on määritetty ainutlaatuinen muistipaikka. | Unionissa muistin sijainti jaetaan kaikille datan jäsenille. |
Yhden tietojäsenen arvon muuttaminen ei vaikuta muihin rakenneosassa oleviin tietojäseniin. | Yhden tietojäsenen arvon muuttaminen muuttaa muiden liitossa olevien tietojen jäsenten arvoa. |
Sen avulla voit alustaa useita jäseniä kerralla. | Sen avulla voit alustaa vain liiton ensimmäisen jäsenen. |
Rakenteen koko on kunkin datan jäsenen koon summa. | Unionin koko on suurimman datajäsenen koko. |
Sitä käytetään pääasiassa erilaisten tietotyyppien tallentamiseen. | Sitä käytetään pääasiassa yhden monista käytettävissä olevista tietotyypeistä tallentamiseen. |
Se vie tilaa jokaiselle jäsenelle, joka on kirjoitettu sisäisiin parametreihin. | Se vie tilaa jäsenelle, jolla on suurin koko kirjoitettuna sisäisiin parametreihin. |
Voit hakea minkä tahansa jäsenen kerrallaan. | Voit käyttää liitossa yhtä jäsentä kerrallaan. |
Se tukee joustavaa ryhmää. | Se ei tue joustavaa taulukkoa. |
Rakenteen edut
Tässä on rakenteen käytön etuja / etuja:
- Rakenteet keräävät useampaa kuin yhtä tietoa samasta aiheesta yhdessä samassa paikassa.
- Se on hyödyllistä, kun haluat kerätä tietoja samankaltaisista tietotyypeistä ja parametreista, kuten etunimi, sukunimi jne.
- Se on erittäin helppo ylläpitää, koska voimme edustaa koko tietuetta yhdellä nimellä.
- Rakenteessa voimme siirtää täydelliset tietueet mihin tahansa toimintoon yhdellä parametrilla.
- Voit käyttää joukkoa rakennetta tallentaaksesi enemmän tietueita samantyyppisillä tiedostoilla.
Unionin edut
Tässä ovat ammattiliiton käytön edut / edut:
- Se vie vähemmän muistia verrattuna rakenteeseen.
- Kun käytät unionia, vain viimeiseen muuttujaan pääsee suoraan.
- Unionia käytetään, kun joudut käyttämään samaa muistipaikkaa kahdelle tai useammalle datajäsenelle.
- Sen avulla voit pitää tietoja vain yhdestä datajäsenestä.
- Sen varattu tila on yhtä suuri kuin datajäsenen maksimikoko.
Rakenteen haitat
Tässä on haittoja / haittoja rakenteen käytölle:
- Jos IT-projektin monimutkaisuus ylittää rajan, sitä on vaikea hallita.
- Yhden tietorakenteen muuttaminen koodissa edellyttää muutoksia monissa muissa paikoissa. Siksi muutoksia on vaikea seurata.
- Rakenne on hitaampi, koska se vaatii tallennustilaa kaikille tiedoille.
- Voit hakea minkä tahansa jäsenen kerrallaan rakenteessa, kun taas voit käyttää yhtä jäsentä kerrallaan liitossa.
- Rakenne vie tilaa jokaiselle jäsenelle, joka on kirjoitettu sisäisiin parametreihin, kun taas unioni vie tilaa jäsenelle, jolla on suurin koko kirjoitettu sisäisiin parametreihin.
- Rakenne tukee joustavaa ryhmää. Unioni ei tue joustavaa järjestelmää.
Liiton haitat
Tässä on haittoja / haittoja unionin käytölle:
- Voit käyttää vain yhtä ammattiliiton jäsentä kerrallaan.
- Kaikkia liitemuuttujia ei voida alustaa tai käyttää vaihtelevilla arvoilla kerrallaan.
- Unioni antaa kaikille jäsenilleen yhden yhteisen tallennustilan.
AVAINEROT:
- Jokaiselle jäsenelle rakenteessa annetaan yksilöllinen muistipaikka, kun taas liitoksessa muistipaikka jaetaan kaikille datan jäsenille.
- Yhden tietojäsenen arvon muuttaminen ei vaikuta muihin rakenneosassa oleviin tietojäseniin, kun taas yhden tietojäsenen arvon muuttaminen muuttaa muiden liitossa olevien tietojen jäsenten arvoa.
- Rakennetta käytetään pääasiassa erilaisten tietotyyppien tallentamiseen, kun taas unionia käytetään pääasiassa yhden monista tietotyypeistä.
- Rakenteessa voit hakea minkä tahansa jäsenen kerrallaan toisaalta liitossa, voit käyttää yhtä jäsentä kerrallaan.
- Rakenne tukee joustavaa ryhmää, kun taas unioni ei tue joustavaa ryhmää.