Rakenteen ja unionin välinen ero C

Sisällysluettelo:

Rakenteen ja unionin välinen ero C
Rakenteen ja unionin välinen ero C

Video: Rakenteen ja unionin välinen ero C

Video: Rakenteen ja unionin välinen ero C
Video: Tavaravienti EU:sta Britanniaan 2024, Heinäkuu
Anonim

Avainero – rakenne vs. unioni C

Matriisi on C-kielen tukema tietorakenne. Taulukkoa voidaan käyttää samantyyppisten tietoelementtien tallentamiseen. Jos lauseke on int-merkeinä [10]; silloin merkit ovat taulukko, johon voi tallentaa kymmenen merkkiä ja ne kaikki ovat kokonaislukuja. Joskus on tarpeen tallentaa erityyppisiä tietoelementtejä samaan muistipaikkaan. Esimerkiksi työntekijällä voi olla työntekijän tunnus, nimi, osasto, ikä jne. Ne ovat eri tietotyyppejä. Siksi tarvitaan menetelmä erilaisten tietoelementtien tallentamiseksi yhdeksi yksiköksi. C:n rakenteita ja liitoksia käytetään erityyppisten tietoelementtien tallentamiseen samaan muistipaikkaan. Rakenne ja liitto ovat samanlaisia, mutta ne eroavat pääasiassa muistin allokoinnin vuoksi. Rakennemuuttujan tallentamiseen tarvittava muisti on kaikkien jäsenten muistikoon summa. Liitosmuuttujan tallentamiseen vaadittava muisti on liiton suurimman elementin vaatima muisti. Tämä on avainero rakenteen ja liiton välillä C:ssä. Tässä artikkelissa käsitellään eroa C:n rakenteen ja liiton välillä.

Mikä on C:n rakenne?

A rakenne on käyttäjän määrittämä tietotyyppi C:ssä. Se auttaa yhdistämään erityyppisiä tietokohteita. Rakenne voi edustaa tietueita. Opiskelijalla voi olla opiskelijatunnus, opiskelijan_nimi jne. Sen sijaan, että jokainen muuttuja tallennettaisiin erikseen, kaikki nämä erilaiset tietokohteet voidaan tiivistää yhdeksi yksiköksi rakenteen avulla. Se määritellään avainsanalla "struct". Rakenteessa kaikki sen jäsenet ovat käytettävissä milloin tahansa. Seuraava luo johdetun tietotyypin struct Student.

struct Student {

intstudent_id;

char opiskelijan_nimi[20];

};

Yllä olevalle rakenteelle muuttujat voidaan ilmoittaa seuraavasti.

rakenna Opiskelija opiskelija1, opiskelija2, opiskelija3;

On kaksi tapaa päästä käsiksi rakenteen jäseniin. Tämä tapahtuu käyttämällä jäsenoperaattoria (.) ja rakenneosoittimen operaattoria (->). Jäseniin pääsee käsiksi komennolla rakenne_muuttujan_nimi. jäsen nimi. Jos ohjelmoija haluaa päästä käsiksi opiskelijan 2 nimeen, hän voi kirjoittaa käskyn muodossa printf(opiskelija2.opiskelijan_nimi);

Katso alla olevaa ohjelmaa rakenteella.

Ero rakenteen ja unionin välillä C
Ero rakenteen ja unionin välillä C

Kuva 01: C-ohjelma rakenteilla

Yllä olevan ohjelman mukaan Student on rakenne. Se sisältää opiskelijatunnus ja opiskelijan_nimi. Pääohjelmassa on ilmoitettu kaksi rakennetyyppistä muuttujaa. Niitä kutsutaan opiskelija1 ja opiskelija2. Opiskelija1:n tunnukselle annetaan arvo 1 käyttämällä jäsenoperaattoria opiskelija1.opiskelijatunnus=1. Nimi "Ann" on merkkijono. Siksi se kopioidaan opiskelijan_nimi-jäseneen käyttämällä merkkijonokopiointitoimintoa strcpy. Tunnus ja nimi annetaan opiskelija2:lle samalla tavalla. Lopuksi nämä arvot tulostetaan jäsenoperaattorilla.

Rakennemuuttujan tallentamiseen tarvittava muisti on kaikkien jäsenten muistikoon summa. Student_id sisältää 4 tavua ja opiskelijan_nimi 20 tavua (yksi tavu kumpaakin merkkiä kohden). Yhteensä 24 tavua on rakenteen vaatiman muistin koon summa.

Mikä unioni on C:ssä?

Union on käyttäjän määrittämä tietotyyppi C:ssä. Se auttaa tallentamaan eri tietotyyppejä samaan muistipaikkaan. Kirjalla voi olla ominaisuuksia, kuten kirjan_nimi, hinta jne. Sen sijaan, että luotaisiin muuttujia kullekin niille, liitännällä voidaan tiivistää kaikki eri tietotyypit yhdeksi yksiköksi liiton avulla. Se määritellään avainsanalla "liitto". Seuraava luo johdetun tietoliiton Kirjan.

liittoKirja{

merkin nimi[20];

tuplahinta;

};

Yllä olevalle liitolle muuttujat voidaan ilmoittaa seuraavasti.

liitto Kirja kirja1, kirja2;

On kaksi tapaa päästä liiton jäseniin. Tämä tapahtuu käyttämällä jäsenoperaattoria (.) ja rakenneosoittimen operaattoria (->). Jäseniin pääsee komennolla liiton_muuttujan_nimi. jäsen nimi. Jos ohjelmoija haluaa päästä käsiksi kirjan1 nimeen, hän voi kirjoittaa käskyn muodossa printf(book1.name);

Katso alla olevaa ohjelmaa ammattiliiton kanssa.

Ero rakenteen ja liiton välillä C_Kuvassa 02
Ero rakenteen ja liiton välillä C_Kuvassa 02

Kuva 02: C-ohjelma yhdistämällä

Yllä olevan ohjelman mukaan Kirja on liitto. Kirja1 on union-tyypin muuttuja. Nimi ja hinta ovat arvoja. Liitossa vain yksi sen jäsenistä pääsee käsiksi kerrallaan ja kaikilla muilla jäsenillä on roskaarvot. ID:n arvo ei tulostu oikein, mutta hinta-arvo tulostuu oikein.

Avainero rakenteen ja unionin välillä C:ssä
Avainero rakenteen ja unionin välillä C:ssä

Kuva 03: Muokattu C-ohjelma liitännällä

Yllä olevan ohjelman mukaan Book on ammattiliitto. Kirja1 ja kirja2 ovat liittotyyppisiä muuttujia. Ensin määritetään arvo kirja1 nimelle ja se tulostetaan. Sitten kirja2-nimen arvo määritetään ja se tulostetaan. Kaikki jäsenet tulostavat oikein, koska yksi jäsen on käytössä kerrallaan. Liiton tallentamiseen vaadittava muisti on liiton suurimman elementin edellyttämä muisti. Yllä olevassa ohjelmassa nimimuuttuja on 20 tavua. Se on hintaa suurempi. Unionin muistin varaus on siis 20 tavua.

Mitä yhtäläisyyksiä rakenteen ja unionin välillä on C?

  • Sekä rakenne että unioni C:ssä ovat käyttäjän määrittämiä tietotyyppejä.
  • Sekä C:n rakennetta että unionia voidaan käyttää eri tietotyyppien tallentamiseen samaan muistipaikkaan.

Mitä eroa on rakenteella ja unionilla C:ssä?

Rakenne vs unioni C

Rakenne on käyttäjän määrittämä tietotyyppi C-kielellä, joka mahdollistaa erityyppisten tietojen yhdistämisen. Union on käyttäjän määrittämä tietotyyppi C-kielellä, joka mahdollistaa erityyppisten tietojen yhdistämisen.
Esteettömyys
Rakenteessa kaikki sen jäsenet ovat käytettävissä milloin tahansa. Ammattiliitossa vain yksi sen jäsenistä on käytettävissä kerrallaan ja kaikki muut jäsenet sisältävät roskaarvoja.
Muistin varaus
Rakennemuuttujan tallentamiseen tarvittava muisti on kaikkien jäsenten muistikoon summa. Unionimuuttujan tallentamiseen vaadittava muisti on liiton suurimman elementin edellyttämä muisti.
Avainsana
Rakenteen määrittämiseen käytetty avainsana on "struct". Avainsana, jota käytetään määrittelemään ammattiliitto, on "liitto".

Yhteenveto – rakenne vs unioni C

Matriisia käytetään samantyyppisten tietoelementtien tallentamiseen. Joskus on tarpeen tallentaa erityyppisiä tietoelementtejä samaan muistipaikkaan. C-ohjelmointikieli tarjoaa rakenteen ja liiton tämän tehtävän suorittamiseen. Molemmat ovat käyttäjän määrittämiä tietotyyppejä. Rakennemuuttujan tallentamiseen tarvittava muisti on kaikkien jäsenten muistikoon summa. Liitosmuuttujan tallentamiseen vaadittava muisti on liiton suurimman elementin vaatima muisti. Tämä on ero rakenteen ja liiton välillä C.

Suositeltava: