Latest web development tutorials

C unione

Union è un tipo speciale di dati, consentendo una posizione diversa nello stesso tipo di dati memorizzati nella memoria.È possibile definire una unione con più membri, ma ogni volta che ci può essere solo un membro con il valore. Organismi forniscono un modo per utilizzare la stessa posizione di memoria in un modo efficace.

Definizione di unione

Per definire un sindacato, è necessario utilizzare le istruzionisindacali, e definire la struttura in un modo simile.dichiarazione unione definisce un nuovo tipo di dati, con una pluralità di elementi. formato dichiarazione dell'Unione è il seguente:

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

tag unione è opzionale, ogni definizione membro è la definizione standard di una variabile, come ad esempio int i; o float f; o altre definizioni valide variabili.Prima della fine del punto e virgola finale corpo comune definito, è possibile specificare una o più delle variabili sindacali, che è facoltativo. La seguente definizione di un tipo di corpo comune di nome dati, ci sono tre membri I, F e str:

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

Ora, il tipodi dati variabili in grado di memorizzare un numero intero, un galleggiante, o una stringa.Ciò significa che una variabile (la stessa posizione di memoria) in grado di memorizzare una pluralità di diversi tipi di dati. È possibile utilizzare qualsiasi tipo di dati incorporati o definite dall'utente in un corpo comune, a seconda delle necessità.

Unione dovrebbe essere abbastanza memoria di archiviazione occupata dal più grande membro del sindacato. Ad esempio, nell'esempio di cui sopra, dati occuperà 20 byte di memoria, perché ogni membro, lo spazio occupato dalla stringa è maggiore. Il seguente esempio mostra l'unione sopra occupato la dimensione totale della memoria:

#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;
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Memory size occupied by data : 20

membro del sindacato di accesso

Per accedere ai paesi membri comuni, usiamol'operatore di accesso utente (.).operatore di accesso membro è un periodo di nomi di variabili e membri del sindacato del nostro sindacato a cui accedere in mezzo. È possibile utilizzare la parola chiave per definire le variabili di tipounione unione.L'esempio seguente dimostra l'uso di un sindacato:

#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;
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

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

Qui possiamo vedere i valori dei membriie fsindacali sono danneggiati, in quanto i valori assegnati alle variabili del ultima posizione memoria occupata, che è i membristrmotivo di uscita intatta. Ora diamo un'occhiata a uno e la stessa istanza, questa volta usiamo una sola variabile, allo stesso tempo, dimostra anche lo scopo principale di utilizzare un sindacato:

#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;
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

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

Qui, tutti i membri in grado di produrre intatto, perché allo stesso tempo utilizza un solo membro.