Forskellen mellem struktur og forening i C
Hvad er struktur?
Struktur er en brugerdefineret datatype i programmeringssproget C, der kombinerer logisk relaterede dataelementer af forskellige datatyper sammen.
Alle strukturelementerne er lagret pรฅ sammenhรฆngende hukommelsessteder. Strukturtypevariabel kan gemme mere end รฉt dataelement af forskellige datatyper under รฉt navn.
Hvad er Union
Union er en brugerdefineret datatype, ligesom en struktur. Union kombinerer genstande af forskellige typer og stรธrrelser sammen. Unionsvariablen tildeler hukommelsespladsen lig med pladsen til at indeholde den stรธrste variabel i union. Det gรธr det muligt for forskellige typer objekter at dele den samme placering.
Syntaks for deklarerende struktur
struct [name of the structure]
{
type member1;
type member2;
type member3;
};
Struktur erklรฆres ved hjรฆlp af nรธgleordet "struct" og navnet pรฅ strukturen. Nummer 1, nummer 2, nummer 3 er individuelle medlemmer af strukturen. Kropsdelen afsluttes med semikolon (;).
Eksempel pรฅ struktur i C-programmering
#include <stdio.h>
struct 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;
}
I ovenstรฅende program oprettes en struktur kaldet elev. Denne struktur har tre datamedlemmer: 1) navn (streng), 2) roll_no (heltal) og 3) mรฆrker (float).
Herefter oprettes en strukturvariabel sdt til at gemme elevoplysninger og vise dem pรฅ computerskรฆrmen.
Output:
Indtast fรธlgende oplysninger:
Indtast elevens navn: James
Indtast elevrullenummer: 21
Indtast elevkarakterer: 67
De oplysninger du har indtastet er:
Elevens navn: John
Elevlistenummer: 21
Elevkarakter: 67.0
Syntaks for at erklรฆre union
union [name of union]
{
type member1;
type member2;
type member3;
};
Fagforening erklรฆres ved at bruge nรธgleordet "union" og fagforeningens navn. Nummer 1, nummer 2, nummer 3 er individuelle medlemmer af fagforeningen. Kropsdelen afsluttes med semikolon (;).
Eksempel pรฅ Union i C-programmering
#include <stdio.h>
union 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;
}
Output:
1101109601
20.199892
a
I ovenstรฅende program kan du se, at vรฆrdierne af x og y bliver รธdelagt. Kun variabel ch udskriver det forventede resultat. Det skyldes, at hukommelsesplaceringen i forening er delt mellem alle medlemsdatatyper.
Derfor vil det eneste datamedlem, hvis vรฆrdi i รธjeblikket er gemt, optage hukommelsesplads. Vรฆrdien af โโvariablen ch blev gemt til sidst, sรฅ vรฆrdien af โโresten af variabler er tabt.
Struktur vs. Union

Her er den vigtige forskel mellem struktur og forening:
| Struktur | Union |
|---|---|
| Du kan bruge et struct nรธgleord til at definere en struktur. | Du kan bruge et fagforeningsnรธgleord til at definere en fagforening. |
| Hvert medlem i strukturen er tildelt en unik hukommelsesplacering. | I forening er en hukommelsesplacering delt af alle datamedlemmer. |
| รndring af vรฆrdien af โโet datamedlem vil ikke pรฅvirke andre datamedlemmer i strukturen. | รndring af vรฆrdien af โโet datamedlem vil รฆndre vรฆrdien af โโandre datamedlemmer i foreningen. |
| Det giver dig mulighed for at initialisere flere medlemmer pรฅ รฉn gang. | Det giver dig mulighed for kun at initialisere det fรธrste medlem af fagforeningen. |
| Den samlede stรธrrelse af strukturen er summen af โโstรธrrelsen af โโhvert datamedlem. | Fagforeningens samlede stรธrrelse er stรธrrelsen af โโdet stรธrste datamedlem. |
| Det bruges hovedsageligt til lagring af forskellige datatyper. | Det bruges hovedsageligt til lagring af en af โโde mange datatyper, der er tilgรฆngelige. |
| Det optager plads til hvert eneste medlem skrevet i indre parametre. | Det optager plads til et medlem med den hรธjeste stรธrrelse skrevet i indre parametre. |
| Du kan hente ethvert medlem ad gangen. | Du kan fรฅ adgang til รฉt medlem ad gangen i fagforeningen. |
| Det understรธtter fleksibelt array. | Det understรธtter ikke et fleksibelt array. |
Fordele ved struktur
Her er fordele/fordele ved at bruge struktur:
- Strukturer samler mere end รฉt stykke data om det samme emne sammen pรฅ det samme sted.
- Det er nyttigt, nรฅr du vil indsamle data fra lignende datatyper og parametre som fornavn, efternavn osv.
- Det er meget nemt at vedligeholde, da vi kan reprรฆsentere hele posten ved at bruge et enkelt navn.
- I strukturen kan vi sende et komplet sรฆt poster til enhver funktion ved hjรฆlp af en enkelt parameter.
- Du kan bruge en rรฆkke strukturer til at gemme flere poster med lignende typer.
Fordele ved fagforening
Her er fordele/fordele ved at bruge fagforening:
- Det optager mindre hukommelse sammenlignet med struktur.
- Nรฅr du bruger union, er der kun direkte adgang til den sidste variabel.
- Union bruges, nรฅr du skal bruge den samme hukommelsesplacering til to eller flere datamedlemmer.
- Det giver dig mulighed for kun at opbevare data for รฉt datamedlem.
- Dens tildelte plads er lig med den maksimale stรธrrelse af datamedlemmet.
Ulemper ved struktur
Her er ulemper/ulemper ved brug af struktur:
- Hvis kompleksiteten af โโit-projekter overskrider grรฆnsen, bliver det svรฆrt at styre.
- รndring af รฉn datastruktur i kode nรธdvendiggรธr รฆndringer mange andre steder. Derfor bliver รฆndringerne svรฆre at track.
- Strukturen er langsommere, fordi den krรฆver lagerplads til alle data.
- Du kan hente ethvert medlem ad gangen i strukturen, mens du kan fรฅ adgang til et medlem ad gangen i fagforeningen.
- Struktur optager plads for hvert medlem skrevet i indre parametre, mens union optager plads til et medlem med den hรธjeste stรธrrelse skrevet i indre parametre.
- Struktur understรธtter fleksibelt array. Union understรธtter ikke et fleksibelt array.
Ulemper ved fagforening
Her er ulemper/ulemper ved at bruge union:
- Du kan kun bruge รฉt fagforeningsmedlem ad gangen.
- Alle unionsvariabler kan ikke initialiseres eller bruges med varierende vรฆrdier ad gangen.
- Unionen tildeler รฉn fรฆlles lagerplads til alle sine medlemmer.
NรGLE FORSKELLE:
- Hvert medlem i strukturen er tildelt en unik hukommelsesplacering, mens en hukommelsesplacering i forening deles af alle datamedlemmer.
- รndring af vรฆrdien af โโet datamedlem vil ikke pรฅvirke andre datamedlemmer i strukturen, mens รฆndring af vรฆrdien af โโet datamedlem vil รฆndre vรฆrdien af โโandre datamedlemmer i foreningen.
- Struktur bruges hovedsageligt til lagring af forskellige datatyper, mens union hovedsageligt bruges til lagring af en af โโde mange datatyper.
- I strukturen kan du hente ethvert medlem ad gangen, pรฅ den anden side i fagforening kan du fรฅ adgang til et medlem ad gangen.
- Struktur understรธtter fleksibelt array, mens union ikke understรธtter et fleksibelt array.
Tjek ogsรฅ vores C Tutorial for begyndere:- Klik her
