Skirtumas tarp struktūros ir sąjungos C

Turinys:

Skirtumas tarp struktūros ir sąjungos C
Skirtumas tarp struktūros ir sąjungos C

Video: Skirtumas tarp struktūros ir sąjungos C

Video: Skirtumas tarp struktūros ir sąjungos C
Video: Structure vs union||Difference between structure and union in C||3 minutes master||Neverquit 2024, Lapkritis
Anonim

Pagrindinis skirtumas – struktūra ir sąjunga C

Masyvas yra duomenų struktūra, palaikoma C kalbos. Masyvas gali būti naudojamas to paties tipo duomenų elementams saugoti. Jei yra teiginys kaip int ženklai [10]; tada ženklai yra masyvas, kuriame galima saugoti dešimt ženklų ir visi jie yra sveikieji skaičiai. Kartais toje pačioje atminties vietoje reikia saugoti skirtingų tipų duomenų elementus. Pavyzdžiui, darbuotojas gali turėti darbuotojo ID, vardą, pavardę, skyrių, amžių ir tt Jie yra skirtingų duomenų tipų. Todėl būtina turėti būdą, kaip įvairius duomenų elementus saugoti kaip vieną vienetą. Struktūros ir sąjungos C yra naudojamos skirtingų tipų duomenų elementams saugoti toje pačioje atminties vietoje. Struktūra ir sąjunga yra panašios, tačiau jos daugiausia skiriasi dėl atminties paskirstymo. Atmintis, reikalinga struktūros kintamajam saugoti, yra visų narių atminties dydžio suma. Atmintis, reikalinga sąjungos kintamajam saugoti, yra atmintis, reikalinga didžiausiam sąjungos elementui. Tai yra pagrindinis skirtumas tarp struktūros ir sąjungos C. Šiame straipsnyje aptariamas skirtumas tarp struktūros ir sąjungos C.

Kas yra C struktūra?

Struktūra yra vartotojo apibrėžtas duomenų tipas C. Ji padeda sujungti skirtingų tipų duomenų elementus. Struktūra gali reprezentuoti įrašus. Mokinys gali turėti studento_id, studento_vardą ir pan. Užuot saugoję kiekvieną kintamąjį atskirai, visi šie skirtingi duomenų elementai gali būti kompaktiški į vieną vienetą naudojant struktūrą. Jis apibrėžiamas naudojant raktinį žodį „struct“. Struktūroje visi jos nariai gali būti pasiekiami bet kuriuo metu. Taip sukuriama išvestinio duomenų tipo struktūra Studentas.

struct Student {

intstudent_id;

char student_name[20];

};

Aukščiau pateiktos struktūros kintamieji gali būti deklaruojami taip.

struct Student student1, student2, student3;

Yra du būdai pasiekti struktūros narius. Tai yra naudojant nario operatorių (.) ir struktūros žymeklio operatorių (->). Narius galima pasiekti naudojant struktūros_kintamojo_pavadinimą. nario vardas. Jei programuotojas nori pasiekti 2 mokinio vardą, jis gali parašyti teiginį kaip printf(studentas2.studento_vardas);

Žiūrėkite toliau pateiktą programą su struktūra.

Skirtumas tarp struktūros ir sąjungos C
Skirtumas tarp struktūros ir sąjungos C

01 pav.: C programa su struktūromis

Pagal aukščiau pateiktą programą Studentas yra struktūra. Jame yra studento_id ir studento_vardas. Pagrindinėje programoje deklaruojami du struktūros tipo kintamieji. Jie vadinami student1 ir student2. Student1 ID priskiriamas 1 verte, naudojant nario operatorių kaip student1.student_id=1. Vardas "Ann" yra eilutė. Todėl jis nukopijuojamas į studento_vardo narį naudojant eilutės kopijavimo funkciją strcpy. ID ir vardas studentui2 priskiriami panašiai. Galiausiai šios reikšmės išspausdinamos naudojant nario operatorių.

Atminties kiekis, reikalingas struktūros kintamajam saugoti, yra visų narių atminties dydžio suma. Studento_id yra 4 baitai, o studento_vardas - 20 baitų (po vieną baitą simboliui). Iš viso 24 baitai yra atminties dydžio, reikalingo struktūrai, suma.

Kas yra sąjunga C?

Sąjunga yra vartotojo apibrėžtas duomenų tipas C. Tai padeda išsaugoti skirtingus duomenų tipus toje pačioje atminties vietoje. Knyga gali turėti ypatybes, pvz., knygos_pavadinimas, kaina ir tt. Užuot sukūrę kiekvieno iš jų kintamuosius, sąjunga gali būti naudojama norint sujungti visus skirtingus duomenų tipus į vieną vienetą naudojant sąjungą. Jis apibrėžiamas naudojant raktinį žodį „sąjunga“. Toliau pateikiama išvestinių duomenų sąjungos knyga.

sąjungos knyga{

char name[20];

dviguba kaina;

};

Aukščiau nurodytos sąjungos kintamieji gali būti deklaruojami taip.

sąjunga 1 knyga, 2 knyga;

Yra du būdai pasiekti sąjungos narius. Tai yra naudojant nario operatorių (.) ir struktūros žymeklio operatorių (->). Narius galima pasiekti naudojant sąjungos_kintamojo_pavadinimą. nario vardas. Jei programuotojas nori pasiekti knygos1 pavadinimą, jis gali parašyti teiginį kaip printf(book1.name);

Peržiūrėkite toliau pateiktą programą su sąjunga.

Skirtumas tarp struktūros ir sąjungos 02 paveiksle
Skirtumas tarp struktūros ir sąjungos 02 paveiksle

02 pav. C programa naudojant jungtį

Pagal aukščiau pateiktą programą, Knyga yra sąjunga. Knyga1 yra sąjungos tipo kintamasis. Pavadinimas ir kaina yra priskirtos reikšmės. Sąjungoje vienu metu galima pasiekti tik vieną iš jos narių, o visi kiti nariai turės šiukšlių vertybes. ID reikšmė spausdinama netinkamai, bet kainos vertė spausdinama tinkamai.

Pagrindiniai skirtumai tarp struktūros ir sąjungos C
Pagrindiniai skirtumai tarp struktūros ir sąjungos C

03 pav. Modifikuota C programa su jungtimi

Pagal pirmiau pateiktą programą „Book“yra sąjunga. Knyga1 ir knyga2 yra sąjungos tipo kintamieji. Pirmiausia priskiriama knygos1 pavadinimo reikšmė ir ji išspausdinama. Tada priskiriama 2 knygos pavadinimo reikšmė ir ji išspausdinama. Visi nariai spausdinami teisingai, nes vienu metu naudojamas vienas narys. Atmintis, reikalinga sąjungai išsaugoti, yra atmintis, reikalinga didžiausiam sąjungos elementui. Aukščiau pateiktoje programoje pavadinimo kintamasis yra 20 baitų. Ji didesnė už kainą. Taigi, jungties atminties paskirstymas yra 20 baitų.

Kokie yra struktūros ir sąjungos panašumai C?

  • Tiek struktūra, tiek sąjunga C yra vartotojo apibrėžti duomenų tipai.
  • Tiek struktūra, tiek junginys C gali būti naudojami skirtingų tipų duomenims saugoti toje pačioje atminties vietoje.

Kuo skiriasi struktūra ir sąjunga C?

Struktūra prieš sąjungą C

Struktūra yra vartotojo apibrėžtas duomenų tipas C kalba, leidžiantis sujungti skirtingų tipų duomenis. Union yra vartotojo apibrėžtas duomenų tipas C kalba, leidžiantis sujungti skirtingų tipų duomenis.
Prieinamumas
Struktūroje visus jos narius galima pasiekti bet kuriuo metu. Sąjungoje vienu metu galima pasiekti tik vieną jos narį, o visi kiti nariai turės šiukšlių vertes.
Atminties paskirstymas
Atmintis, reikalinga struktūros kintamajam saugoti, yra visų narių atminties dydžio suma. Atmintis, reikalinga jungties kintamajam saugoti, yra atmintis, reikalinga didžiausiam jungties elementui.
Raktinis žodis
Struktūrai apibrėžti naudojamas raktinis žodis yra „struct“. Raktažodis, naudojamas sąjungai apibrėžti, yra „sąjunga“.

Santrauka – struktūra prieš sąjungą C

Masyvas naudojamas to paties tipo duomenų elementams saugoti. Kartais toje pačioje atminties vietoje reikia saugoti skirtingų tipų duomenų elementus. C programavimo kalba suteikia struktūrą ir sąjungą šiai užduočiai atlikti. Abu yra vartotojo apibrėžti duomenų tipai. Atmintis, reikalinga struktūros kintamajam saugoti, yra visų narių atminties dydžio suma. Atmintis, reikalinga sąjungos kintamajam saugoti, yra atmintis, reikalinga didžiausiam sąjungos elementui. Tai yra skirtumas tarp struktūros ir sąjungos C.

Rekomenduojamas: