Key Difference – Structure vs Union in C
En matrise er en datastruktur som støttes av C-språk. En matrise kan brukes til å lagre dataelementer av samme type. Hvis det er en uttalelse som int markerer [10]; så er merker en matrise som kan lagre ti merker og alle er heltall. Noen ganger er det nødvendig å lagre dataelementer av forskjellige typer på samme minneplassering. For eksempel kan en ansatt ha ansatt-ID, navn, avdeling, alder osv. De er av forskjellige datatyper. Derfor er det nødvendig å ha en metode for å lagre ulike dataelementer som en enkelt enhet. Strukturer og fagforeninger i C brukes til å lagre dataelementer av forskjellige typer på samme minneplassering. En struktur og en forening er like, men de skiller hovedsakelig på grunn av minnetildeling. Minnet som kreves for å lagre en strukturvariabel er summeringen av minnestørrelsen til alle medlemmer. Minnet som kreves for å lagre en unionsvariabel er minnet som kreves for det største elementet i foreningen. Det er nøkkelforskjellen mellom struktur og union i C. Denne artikkelen diskuterer forskjellen mellom struktur og union i C.
Hva er struktur i C?
En struktur er en brukerdefinert datatype i C. Den hjelper å kombinere dataelementer av forskjellige typer. En struktur kan representere poster. En student kan ha student_id, student_name osv. I stedet for å lagre hver variabel separat, kan alle disse forskjellige dataelementene komprimeres til en enkelt enhet ved hjelp av en struktur. Det er definert ved hjelp av nøkkelordet "struct". I en struktur kan alle medlemmene nås når som helst. Det følgende oppretter en avledet datatypestruktur Student.
struct Student {
intstudent_id;
char student_name[20];
};
For strukturen ovenfor kan variabler deklareres som følger.
struct Student student1, student2, student3;
Det er to metoder for å få tilgang til medlemmene av strukturen. Det er ved å bruke medlemsoperatoren (.) og strukturpekeroperatoren (->). Medlemmene kan nås ved å bruke structure_variable_name. Medlemsnavn. Hvis programmereren ønsker å få tilgang til navnet på elev 2, kan han skrive setningen som printf(student2.student_name);
Se programmet nedenfor med en struktur.
Figur 01: C-program med strukturer
I følge programmet ovenfor er Student en struktur. Den inneholder student_id og student_name. To variabler av strukturtype er deklarert i hovedprogrammet. De kalles student1 og student2. Student1s ID tildeles verdi 1 ved å bruke medlemsoperatoren som student1.student_id=1. Navnet "Ann" er en streng. Derfor kopieres det til student_name-medlemmet ved å bruke strengkopieringsfunksjonen strcpy. ID og navn tildeles student2 på lignende måte. Til slutt skrives disse verdiene ut med medlemsoperatør.
Mengden minne som kreves for å lagre en strukturvariabel er summen av minnestørrelsen til alle medlemmene. Student_id inneholder 4 byte og student_name inneholder 20 byte (en byte hver for et tegn). De totale 24 bytene er summen av minnestørrelsen som kreves av strukturen.
Hva er Union i C?
En union er en brukerdefinert datatype i C. Det hjelper å lagre forskjellige datatyper på samme minneplassering. En bok kan ha egenskaper som boknavn, pris osv. I stedet for å lage variabler for hver av dem, kan en union brukes til å komprimere alle forskjellige datatyper til én enhet ved hjelp av en union. Den er definert ved hjelp av nøkkelordet «union». Følgende oppretter en avledet dataforeningsbok.
unionBook{
tegnnavn[20];
dobbel pris;
};
For foreningen ovenfor kan variabler deklareres som følger.
union Bok bok1, bok2;
Det er to måter å få tilgang til fagforeningens medlemmer på. Det er ved å bruke medlemsoperatoren (.) og strukturpekeroperatoren (->). Medlemmene kan nås ved å bruke union_variable_name. Medlemsnavn. Hvis programmereren ønsker å få tilgang til navnet på boken1, kan han skrive setningen som printf(bok1.navn);
Se programmet nedenfor med en fagforening.
Figur 02: C-program med union
I følge programmet ovenfor er Boken en fagforening. Book1 er en variabel av typen union. Navnet og prisen er tilordnet verdier. I fagforeningen kan bare ett av medlemmene nås om gangen, og alle andre medlemmer vil ha søppelverdier. Verdien av id skrives ikke ut riktig, men prisverdien skrives ut riktig.
Figur 03: Modifisert C-program med fagforening
I følge programmet ovenfor er Book en fagforening. Bok1 og bok2 er unionsvariabler. Først tildeles verdien for bok1-navnet og det skrives ut. Deretter tildeles verdien for bok2-navnet og det skrives ut. Alle medlemmene skriver ut riktig fordi ett medlem brukes om gangen. Minnet som kreves for å lagre en union er minnet som kreves for det største elementet i foreningen. I programmet ovenfor er navnevariabelen 20 byte. Den er større enn prisen. Så minnetildelingen for fagforeningen er 20 byte.
Hva er likhetene mellom struktur og forening i C?
- Både Structure og Union in C er brukerdefinerte datatyper.
- Både Structure og Union i C kan brukes til å lagre forskjellige datatyper på samme minneplassering.
Hva er forskjellen mellom struktur og forening i C?
Structure vs Union i C |
|
Structure er en brukerdefinert datatype på C-språk som gjør det mulig å kombinere data av forskjellige typer sammen. | Union er en brukerdefinert datatype på C-språk som gjør det mulig å kombinere data av forskjellige typer sammen. |
Tilgjengelighet | |
I en struktur kan alle medlemmene nås når som helst. | I en fagforening kan bare ett av medlemmene nås om gangen, og alle andre medlemmer vil inneholde søppelverdier. |
Minnetildeling | |
Minnet som kreves for å lagre en strukturvariabel er summeringen av minnestørrelsen til alle medlemmer. | Minnet som kreves for å lagre en unionsvariabel er minnet som kreves for det største elementet i union. |
søkeord | |
Nøkkelordet som brukes til å definere en struktur er «struct». | Nøkkelordet som brukes for å definere en fagforening er «union». |
Summary – Structure vs Union in C
En matrise brukes til å lagre dataelementene av samme type. Noen ganger er det nødvendig å lagre dataelementer av forskjellige typer på samme minnested. C programmeringsspråk gir struktur og forening for å utføre denne oppgaven. Begge er brukerdefinerte datatyper. Minnet som kreves for å lagre en strukturvariabel er summeringen av minnestørrelsen til alle medlemmer. Minnet som kreves for å lagre en unionsvariabel er minnet som kreves for det største elementet i foreningen. Dette er forskjellen mellom struktur og forening i C.