C vakbonden
C Vakbonden
In deze tutorial leer je over vakbonden in C-programmering. Meer specifiek, hoe vakbonden op te richten, toegang te krijgen tot de leden en de verschillen tussen vakbonden en structuren te leren kennen.
Een union is een door de gebruiker gedefinieerd type vergelijkbaar met structs in C, op één belangrijk verschil na.
Structuren wijzen voldoende ruimte toe om al hun leden op te slaan, terwijl vakbonden slechts één lidwaarde tegelijk kunnen bevatten .
Hoe een unie definiëren?
We gebruiken de union
trefwoord om vakbonden te definiëren. Hier is een voorbeeld:
union car
{
char name[50];
int price;
};
De bovenstaande code definieert een afgeleid type union car
.
Unionvariabelen maken
Wanneer een vakbond is gedefinieerd, wordt een door de gebruiker gedefinieerd type gemaakt. Er wordt echter geen geheugen toegewezen. Om geheugen toe te wijzen aan een bepaald type vereniging en ermee te werken, moeten we variabelen maken.
Zo maken we unievariabelen.
union car
{
char name[50];
int price;
};
int main()
{
union car car1, car2, *car3;
return 0;
}
Een andere manier om unievariabelen te maken is:
union car
{
char name[50];
int price;
} car1, car2, *car3;
In beide gevallen, unievariabelen car1 , auto2 , en een vakbondsaanwijzer car3 van union car
type worden gemaakt.
Toegang tot leden van een vakbond
We gebruiken de .
exploitant om toegang te krijgen tot leden van een vakbond. En om toegang te krijgen tot pointervariabelen, gebruiken we de ->
telefoniste.
In het bovenstaande voorbeeld,
- Om toegang te krijgen tot prijs voor
car1
,car1.price
wordt gebruikt. - Om toegang te krijgen tot prijs met behulp van
car3
, ofwel(*car3).price
ofcar3->price
kan worden gebruikt.
Verschil tussen vakbonden en structuren
Laten we een voorbeeld nemen om het verschil tussen vakbonden en structuren aan te tonen:
#include <stdio.h>
union unionJob
{
//defining a union
char name[32];
float salary;
int workerNo;
} uJob;
struct structJob
{
char name[32];
float salary;
int workerNo;
} sJob;
int main()
{
printf("size of union = %d bytes", sizeof(uJob));
printf("\nsize of structure = %d bytes", sizeof(sJob));
return 0;
}
Uitvoer
size of union = 32 size of structure = 40
Waarom dit verschil in de grootte van unie- en structuurvariabelen?
Hier, de grootte van sJob is 40 bytes omdat
- de grootte van
name[32]
is 32 bytes - de grootte van
salary
is 4 bytes - de grootte van
workerNo
is 4 bytes
De grootte van uJob is 32 bytes. Dit komt omdat de grootte van een unie-variabele altijd de grootte van het grootste element zal zijn. In het bovenstaande voorbeeld is de grootte van het grootste element, (name[32]
), is 32 bytes.
Bij een vakbond delen alle leden dezelfde herinnering .
Voorbeeld:toegang tot vakbondsleden
#include <stdio.h>
union Job {
float salary;
int workerNo;
} j;
int main() {
j.salary = 12.3;
// when j.workerNo is assigned a value,
// j.salary will no longer hold 12.3
j.workerNo = 100;
printf("Salary = %.1f\n", j.salary);
printf("Number of workers = %d", j.workerNo);
return 0;
}
Uitvoer
Salary = 0.0 Number of workers = 100
Ga voor meer informatie over waar vakbonden worden gebruikt naar Waarom hebben we C-vakbonden nodig?
C Taal
- Java-opsommingen
- Java enum Constructor
- C - Vakbonden
- Hoe een pneumatische klep te dimensioneren?
- AI in productiemarktomvang bereikt $ 4798 miljoen in 2026
- Aluminium staafvoorraad op maat snijden
- Wat is een Pipe Union?
- De maat van een commerciële airconditioner maken
- Welk formaat draaibank heb ik nodig voor wapensmeden?
- Grootte is belangrijk voor luchtontvangers
- Hoe meet ik een industriële luchtcompressor?