Differenza tra struttura e unione

Sia la struttura che l'unione sono tipi di dati definiti dall'utente in linguaggio C e sono concettualmente uguali, tuttavia sono ancora diversi in qualche modo come il modo in cui la memoria è allocata ai loro membri. Sono dichiarati allo stesso modo ma funzionano diversamente. Consentono all'utente di combinare diversi tipi di dati con un unico nome. Mentre per ogni membro viene utilizzata una posizione di memoria separata quando si dichiarano le variabili di struttura, i diversi membri di una variabile unione condividono la stessa posizione di memoria. Studiamo la differenza tra struttura e unione è dettaglio.

Cos'è la struttura?

Una struttura è solo un altro tipo di dati definito dall'utente in C che consente all'utente di combinare tipi di dati di tipi diversi in un singolo tipo in un blocco di memoria. Una struttura può contenere sia tipi di dati semplici che complessi correlati tra loro, che altrimenti non avrebbero senso. Ogni membro all'interno di una struttura ottiene la propria posizione di memoria in modo che possa essere richiamato e richiamato in qualsiasi momento.

Una struttura viene utilizzata quando un sacco di dati richiede un raggruppamento come una directory che memorizza informazioni su molti membri di un libro o una rubrica che memorizza tutte le informazioni su un singolo contatto: nome, indirizzo, numero di contatto e così via. L'indirizzo di ciascun membro sarà in ordine ascendente, il che significa che la memoria di ciascun membro inizierà con diversi valori di offset. La modifica del valore di un membro non avrà alcun effetto sugli altri membri.

Una parola chiave 'struct' viene utilizzata per definire una struttura di diversi tipi di dati sotto un singolo nome. Ad esempio, se si desidera creare un database dei dipendenti, è necessario memorizzare il nome, l'età, il telefono e i dettagli dello stipendio di un dipendente in un'unica entità. Questo viene fatto dalla parola chiave 'struct', che dice al compilatore che una struttura è stata dichiarata.

struct employee

nome della stringa;

stringa di età;

telefono a corde;

salario per archi;

emp1, emp2;

Qui, 'dipendente' è il nome della struttura e due variabili 'emp1' e 'emp2' sono create dal tipo 'impiegato'. Le parentesi graffe di chiusura devono essere seguite da un punto e virgola (;).

I membri di una struttura sono accessibili da due tipi di operatori:

  1. Operatore membro
  2. Operatore puntatore di struttura

Cos'è l'Unione?

È un tipo di dati speciale utilizzato in C che consente all'utente di memorizzare tipi di dati di tipi diversi nella stessa posizione di memoria. Un'unione è abbastanza simile a una struttura e può essere definita sostituendo la parola chiave "struct" con la parola chiave "union". I membri si sovrappongono il ricordo l'uno dell'altro in un'unione ed è abbastanza grande da adattarsi a tutti i suoi membri.

Quando una variabile è associata a unione, il compilatore alloca la memoria considerando la dimensione della memoria più grande, quindi la dimensione di una unione è uguale alla dimensione del membro di dati più grande. Un'unione può essere definita con molti membri, ma solo un membro contiene il valore in una determinata istanza di tempo.

L'indirizzo è lo stesso per tutti i membri di un sindacato, il che significa che ogni membro inizia con lo stesso valore di offset. E alterare il valore di un membro influenzerà i valori degli altri membri. Un sindacato può essere utilizzato quando si desidera memorizzare qualcosa che è uno dei diversi tipi di dati.

impiegato sindacale

nome char [32];

int età;

salario galleggiante;

;

Qui la parola chiave 'unione' definisce l'unione che è abbastanza simile alla dichiarazione della struttura. La variabile può memorizzare un valore stringa che è "nome del dipendente", un valore intero che è "l'età del dipendente" o un valore float che rappresenta lo "stipendio del dipendente".

Differenza tra struttura e unione

1. Parola chiave

La parola chiave "struct" viene utilizzata per definire una struttura mentre la parola chiave "union" viene utilizzata per definire un'unione.

2. Assegnazione della memoria

Lo spazio di memoria separato è assegnato per i membri all'interno di una struttura ei membri hanno indirizzi diversi che non condividono la memoria. Un sindacato, d'altra parte, condivide lo stesso spazio di memoria per tutti i suoi membri in modo che venga assegnata la posizione di memoria condivisa.

3. Accesso membri

Un sindacato memorizza un singolo valore alla volta per tutti i suoi membri rendendo l'accessibilità a un solo membro alla volta. Mentre più valori possono essere memorizzati in una struttura in modo tale che qualsiasi valore membro possa essere richiamato e richiamato in qualsiasi momento.

4. Dimensione

La dimensione di una struttura è uguale alla somma della dimensione di tutti i membri o più, mentre la dimensione di un'unione è uguale alla dimensione del membro di dimensione più grande.

5. Inizializzazione

In una struttura, è possibile inizializzare più membri contemporaneamente, mentre in un'unione, solo il primo membro può essere inizializzato con il valore del suo tipo.

5. Valore

Una struttura può memorizzare diversi valori di tutti i membri e modificare il valore di un membro non avrà alcun effetto sui valori degli altri membri. Mentre un'unione memorizza lo stesso valore per tutti i suoi membri e il cambiamento di valore di un membro influenzerà il valore dell'altro.

Struttura vs. Unione

Struttura Unione
Struct keyword è usato per definire una struttura. La parola chiave union è utilizzata per definire un'unione.
I membri non condividono la memoria in una struttura. I membri condividono lo spazio di memoria in un sindacato.
Qualsiasi membro può essere richiamato in qualsiasi momento in una struttura. È possibile accedere a un solo membro alla volta in un'unione.
Diversi membri di una struttura possono essere inizializzati contemporaneamente. Solo il primo membro può essere inizializzato.
La dimensione della struttura è uguale alla somma delle dimensioni di ciascun membro. La dimensione dell'unione è uguale alla dimensione del membro più grande.
La modifica del valore di un membro non influisce sul valore di un altro. La modifica del valore di un membro influenzerà i valori degli altri membri.
Memorizza valori diversi per tutti i membri. Memorizza lo stesso valore per tutti i membri.

Sommario

  • Sia la struttura che l'unione sono tipi di dati definiti dall'utente in C che sono funzionalmente e concettualmente gli stessi, sebbene in qualche modo siano piuttosto diversi.
  •  Entrambi contengono variabili di diversi tipi di dati, ma usano la stessa sintassi per la dichiarazione di variabili e l'accesso ai membri. Mentre una struttura è definita dalla parola chiave 'struct', un'unione è definita dalla parola chiave 'union'.
  • Ogni membro riceve una posizione di memoria separata in una struttura, mentre in un'unione, lo spazio di memoria totale è equivalente al membro di dimensione più grande. Tutti i membri condividono lo stesso spazio di memoria in un sindacato.
  • È possibile accedere a qualsiasi membro in qualsiasi sequenza in una struttura, mentre in un'unione è possibile accedere solo a tale variabile il cui valore è stato memorizzato di recente.