Sleutelverskil – Struktuur vs Unie in C
'n Skikking is 'n data wat deur C-taal ondersteun word. 'n Skikking kan gebruik word om data-elemente van dieselfde tipe te stoor. As daar 'n stelling is as int punte [10]; dan is punte 'n skikking wat tien punte kan stoor en almal is heelgetalle. Soms is dit nodig om data-elemente van verskillende tipes in dieselfde geheue plek te stoor. Byvoorbeeld, 'n werknemer kan 'n werknemer-ID, naam, departement, ouderdom ens hê. Hulle is van verskillende datatipes. Daarom is dit nodig om 'n metode te hê om verskeie data-elemente as 'n enkele eenheid te stoor. Strukture en unies in C word gebruik vir die stoor van data-elemente van verskillende tipes in dieselfde geheue plek.'n Struktuur en 'n unie is soortgelyk, maar hulle onderskei hoofsaaklik as gevolg van geheuetoewysing. Die geheue wat benodig word om 'n struktuurveranderlike te stoor, is die opsomming van die geheuegrootte van alle lede. Die geheue wat benodig word om 'n unieveranderlike te stoor, is die geheue wat benodig word vir die grootste element in die unie. Dit is die sleutelverskil tussen struktuur en unie in C. Hierdie artikel bespreek die verskil tussen struktuur en unie in C.
Wat is struktuur in C?
'n Struktuur is 'n gebruikergedefinieerde datatipe in C. Dit help om data-items van verskillende tipes te kombineer. 'n Struktuur kan rekords verteenwoordig. 'n Student kan student_id, student_name ens hê. Eerder as om elke veranderlike afsonderlik te stoor, kan al hierdie verskillende data-items kompak word in 'n enkele eenheid deur 'n struktuur te gebruik. Dit word gedefinieer deur die sleutelwoord 'struct' te gebruik. In 'n struktuur kan daar enige tyd toegang tot al sy lede verkry word. Die volgende skep 'n afgeleide datatipe struktuur Student.
struct Student {
intstudent_id;
char student_name[20];
};
Vir bogenoemde struktuur kan veranderlikes soos volg verklaar word.
struct Student student1, student2, student3;
Daar is twee metodes om toegang tot die lede van die struktuur te kry. Dit is deur die lidoperateur (.) en struktuurwyseroperateur (->) te gebruik. Die lede kan verkry word deur gebruik te maak van structure_variable_name. lid naam. As die programmeerder toegang tot die naam van die student 2 wil kry, kan hy die stelling skryf as printf(student2.student_name);
Verwys die onderstaande program met 'n struktuur.
Figuur 01: C-program met strukture
Volgens bogenoemde program is Student 'n struktuur. Dit bevat student_id en student_name. Twee veranderlikes van struktuurtipe word in die hoofprogram verklaar. Hulle word student1 en student2 genoem. Die student1 se ID word met waarde 1 toegeken deur die lidoperateur as student1.student_id=1 te gebruik. Die naam "Ann" is 'n string. Daarom word dit na die student_name-lid gekopieer deur die string copy-funksie strcpy te gebruik. Die ID en naam word op soortgelyke wyse aan student2 toegeken. Laastens word daardie waardes deur lidoperateur gedruk.
Die hoeveelheid geheue wat benodig word om 'n struktuurveranderlike te stoor, is die som van die geheuegrootte van alle lede. Die student_id bevat 4 grepe en student_name bevat 20 grepe (een greep elk vir 'n karakter). Die totale 24 grepe is die som van geheuegrootte wat deur die struktuur vereis word.
Wat is Unie in C?
'n Unie is 'n gebruikergedefinieerde datatipe in C. Dit help om verskillende datatipes in dieselfde geheueplek te stoor. 'n Boek kan eienskappe hê soos boeknaam, prys, ens. In plaas daarvan om veranderlikes vir elkeen van hulle te skep, kan 'n unie gebruik word om alle verskillende datatipes in 'n een eenheid te kompak deur 'n unie te gebruik. Dit word gedefinieer deur die sleutelwoord 'unie' te gebruik. Die volgende skep 'n afgeleide data-unieboek.
unionBook{
char name[20];
dubbelprys;
};
Vir bogenoemde unie kan veranderlikes soos volg verklaar word.
union Boek boek1, boek2;
Daar is twee metodes om toegang tot die lede van die vakbond te kry. Dit is deur die lidoperateur (.) en struktuurwyseroperateur (->) te gebruik. Die lede kan verkry word deur union_variable_name te gebruik. lid naam. As die programmeerder toegang tot die naam van die boek1 wil verkry, kan hy die stelling skryf as printf(book1.name);
Verwys die onderstaande program met 'n vakbond.
Figuur 02: C-program met behulp van unie
Volgens bogenoemde program is die Boek 'n vakbond. Die boek1 is 'n veranderlike van tipe unie. Die naam en prys is toegekende waardes. In unie kan slegs een van sy lede op 'n slag verkry word en alle ander lede sal vulliswaardes hê. Die waarde van id word nie behoorlik gedruk nie, maar die pryswaarde word behoorlik gedruk.
Figuur 03: Gewysigde C-program met vakbond
Volgens bogenoemde program is Book 'n vakbond. Die boek1 en boek2 is unie tipe veranderlikes. Eerstens word die waarde vir boek1-naam toegeken en dit word gedruk. Dan word die waarde vir boek2-naam toegeken en dit word gedruk. Al die lede druk korrek omdat een lid op 'n slag gebruik word. Die geheue wat nodig is om 'n unie te stoor, is die geheue wat benodig word vir die grootste element van die unie. In die bogenoemde program is die naam veranderlike 20 grepe. Dit is groter as die prys. Dus, die geheuetoewysing vir die unie is 20 grepe.
Wat is die ooreenkomste tussen struktuur en vereniging in C?
- Beide Struktuur en Unie in C is gebruikergedefinieerde datatipes.
- Beide Struktuur en Unie in C kan gebruik word om verskillende datatipes in dieselfde geheueplek te stoor.
Wat is die verskil tussen struktuur en vereniging in C?
Struktuur vs Unie in C |
|
Struktuur is 'n gebruikergedefinieerde datatipe in C-taal wat dit moontlik maak om data van verskillende tipes saam te kombineer. | Union is 'n gebruikergedefinieerde datatipe in C-taal wat dit moontlik maak om data van verskillende tipes saam te kombineer. |
Toeganklikheid | |
In 'n struktuur kan enige tyd toegang tot al sy lede verkry word. | In 'n vakbond kan slegs een van sy lede op 'n slag verkry word en alle ander lede sal vulliswaardes bevat. |
Geheuetoewysing | |
Die geheue wat benodig word om 'n struktuurveranderlike te stoor, is die opsomming van die geheuegrootte van alle lede. | Die geheue wat benodig word om 'n unieveranderlike te stoor, is die geheue wat benodig word vir die grootste element in die unie. |
Sleutelwoord | |
Die sleutelwoord wat gebruik word om 'n struktuur te definieer, is 'struct'. | Die sleutelwoord wat gebruik word om 'n vakbond te definieer, is 'vakbond'. |
Opsomming – Struktuur vs Unie in C
'n Skikking word gebruik om die data-elemente van dieselfde tipe te stoor. Soms is dit nodig om data-elemente van verskillende tipes in dieselfde geheue plek te stoor. C-programmeertaal verskaf struktuur en unie om hierdie taak te verrig. Albei is gebruikergedefinieerde datatipes. Die geheue wat benodig word om 'n struktuurveranderlike te stoor, is die opsomming van die geheuegrootte van alle lede. Die geheue wat benodig word om 'n unieveranderlike te stoor, is die geheue wat benodig word vir die grootste element in die unie. Dit is die verskil tussen struktuur en unie in C.