Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C - Vakbonden

Een vakbond is een speciaal gegevenstype dat beschikbaar is in C en waarmee verschillende gegevenstypen op dezelfde geheugenlocatie kunnen worden opgeslagen. U kunt een unie met veel leden definiëren, maar slechts één lid kan tegelijkertijd een waarde bevatten. Vakbonden bieden een efficiënte manier om dezelfde geheugenlocatie voor meerdere doeleinden te gebruiken.

Een unie definiëren

Om een ​​vakbond te definiëren, moet u de vereniging . gebruiken verklaring op dezelfde manier als bij het definiëren van een structuur. De vakbondsverklaring definieert een nieuw gegevenstype met meer dan één lid voor uw programma. Het formaat van de vakbondsverklaring is als volgt −

union [union tag] {
   member definition;
   member definition;
   ...
   member definition;
} [one or more union variables];  

De union-tag is optioneel en elke liddefinitie is een normale variabeledefinitie, zoals int i; of zweven f; of een andere geldige variabeledefinitie. Aan het einde van de unie-definitie, vóór de laatste puntkomma, kunt u een of meer union-variabelen opgeven, maar dit is optioneel. Dit is de manier waarop u een unietype zou definiëren met de naam Data met drie leden i, f en str −

union Data {
   int i;
   float f;
   char str[20];
} data;  

Nu, een variabele van Data type kan een geheel getal, een getal met drijvende komma of een reeks tekens opslaan. Het betekent dat een enkele variabele, d.w.z. dezelfde geheugenlocatie, kan worden gebruikt om meerdere soorten gegevens op te slaan. U kunt alle ingebouwde of door de gebruiker gedefinieerde gegevenstypen binnen een unie gebruiken op basis van uw vereisten.

Het geheugen dat door een vakbond wordt ingenomen, zal groot genoeg zijn om het grootste lid van de vakbond vast te houden. In het bovenstaande voorbeeld neemt het gegevenstype bijvoorbeeld 20 bytes geheugenruimte in beslag, omdat dit de maximale ruimte is die kan worden ingenomen door een tekenreeks. Het volgende voorbeeld toont de totale geheugengrootte die wordt ingenomen door de bovenstaande unie −

Live demo
#include <stdio.h>
#include <string.h>
 
union Data {
   int i;
   float f;
   char str[20];
};
 
int main( ) {

   union Data data;        

   printf( "Memory size occupied by data : %d\n", sizeof(data));

   return 0;
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

Memory size occupied by data : 20

Toegang tot vakbondsleden

Om toegang te krijgen tot een lid van een vakbond, gebruiken we de lidtoegangsoperator (.) . De toegangsoperator voor leden is gecodeerd als een punt tussen de naam van de vakbondsvariabele en het vakbondslid waartoe we toegang willen. U zou het zoekwoord unie . gebruiken om variabelen van het type union te definiëren. Het volgende voorbeeld laat zien hoe u vakbonden in een programma gebruikt −

Live demo
#include <stdio.h>
#include <string.h>
 
union Data {
   int i;
   float f;
   char str[20];
};
 
int main( ) {

   union Data data;        

   data.i = 10;
   data.f = 220.5;
   strcpy( data.str, "C Programming");

   printf( "data.i : %d\n", data.i);
   printf( "data.f : %f\n", data.f);
   printf( "data.str : %s\n", data.str);

   return 0;
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

Hier kunnen we zien dat de waarden van i en f leden van union zijn beschadigd omdat de uiteindelijke waarde die aan de variabele is toegewezen de geheugenlocatie heeft ingenomen en dit is de reden dat de waarde van str lid wordt erg goed afgedrukt.

Laten we nu nogmaals naar hetzelfde voorbeeld kijken, waarbij we één variabele per keer zullen gebruiken, wat het belangrijkste doel is van het hebben van vakbonden −

Live demo
#include <stdio.h>
#include <string.h>
 
union Data {
   int i;
   float f;
   char str[20];
};
 
int main( ) {

   union Data data;        

   data.i = 10;
   printf( "data.i : %d\n", data.i);
   
   data.f = 220.5;
   printf( "data.f : %f\n", data.f);
   
   strcpy( data.str, "C Programming");
   printf( "data.str : %s\n", data.str);

   return 0;
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

data.i : 10
data.f : 220.500000
data.str : C Programming

Hier worden alle leden heel goed afgedrukt omdat één lid tegelijk wordt gebruikt.


C Taal

  1. Microprocessors
  2. Op-Amp-gegevens
  3. C++-gegevenstypen
  4. C Gegevenstypen
  5. C vakbonden
  6. Python-gegevenstypen
  7. C - Gegevenstypen
  8. C++-gegevensstructuren
  9. Gegevensabstractie in C++
  10. Gegevensinkapseling in C++
  11. MATLAB - Gegevenstypen