Differenza tra struttura e unione

Sommario:

Anonim

Cos'è la struttura?

La struttura è un tipo di dati definito dall'utente nel linguaggio di programmazione C che combina elementi di dati correlati logicamente di diversi tipi di dati.

Tutti gli elementi della struttura vengono memorizzati in posizioni di memoria contigue. La variabile del tipo di struttura può memorizzare più di un elemento di dati di diversi tipi di dati sotto un unico nome.

In questo tutorial imparerai:

  • Cos'è la struttura?
  • Cos'è l'Unione
  • Sintassi della struttura di dichiarazione
  • Esempio di struttura nella programmazione C.
  • Sintassi della dichiarazione di unione
  • Esempio di unione nella programmazione C.
  • Struttura vs. Unione
  • Vantaggi della struttura
  • Vantaggi dell'unione
  • Svantaggi della struttura
  • Svantaggi dell'unione

Cos'è l'Unione

L'unione è un tipo di dati definito dall'utente, proprio come una struttura. Union combina insieme oggetti di diversi tipi e dimensioni. La variabile union alloca lo spazio di memoria uguale allo spazio per contenere la variabile più grande di union. Consente a diversi tipi di oggetti di condividere la stessa posizione.

Sintassi della struttura di dichiarazione

struct [name of the structure]{type member1;type member2;type member3;};

La struttura viene dichiarata utilizzando la parola chiave "struct" e il nome della struttura. Numero 1, numero 2, numero 3 sono singoli membri della struttura. La parte del corpo termina con un punto e virgola (;).

Esempio di struttura nella programmazione C.

#include struct student {char name[60];int roll_no;float marks;} sdt;int main() {printf("Enter the following information:\n");printf("Enter student name: ");fgets(sdt.name, sizeof(sdt.name), stdin);printf("Enter student roll number: ");scanf("%d", & sdt. roll_no);printf("Enter students marks: ");scanf("%f", & sdt.marks);printf("The information you have entered is: \n");printf("Student name: ");printf("%s", sdt.name);printf("Student roll number: %d\n", sdt. roll_no);printf("Student marks: %.1f\n", sdt.marks);return 0;}

Nel programma sopra, viene creata una struttura chiamata studente. Questa struttura ha tre membri dati: 1) nome (stringa), 2) roll_no (intero) e 3) contrassegni (float).

Successivamente, viene creata una variabile di struttura sdt per memorizzare le informazioni sugli studenti e visualizzarle sullo schermo del computer.

Produzione:

Immettere le seguenti informazioni:

Inserisci il nome dello studente: James

Immettere il numero di registro dello studente: 21

Inserisci i voti degli studenti: 67

Le informazioni che hai inserito sono:

Nome dello studente: John

Numero di studenti: 21

Voti degli studenti: 67,0

Sintassi della dichiarazione di unione

union [name of union]{type member1;type member2;type member3;};

L'unione viene dichiarata utilizzando la parola chiave "unione" e il nome dell'unione. Il numero 1, il numero 2, il numero 3 sono membri individuali del sindacato. La parte del corpo termina con un punto e virgola (;).

Esempio di unione nella programmazione C.

#include union item{int x;float y;char ch;};int main( ){union item it;it.x = 12;it.y = 20.2;it.ch = 'a';printf("%d\n", it.x);printf("%f\n", it.y);printf("%c\n", it.ch);return 0;}

Produzione:

1101109601

20.199892

un

Nel programma sopra, puoi vedere che i valori di x e y vengono danneggiati. Solo la variabile ch stampa il risultato atteso. È perché, nell'unione, la posizione della memoria è condivisa tra tutti i tipi di dati dei membri.

Pertanto, l'unico membro di dati il ​​cui valore è attualmente memorizzato, occuperà lo spazio di memoria. Il valore della variabile ch è stato finalmente memorizzato, quindi il valore del resto delle variabili è perso.

Struttura vs. Unione

Ecco l'importante differenza tra struttura e unione:

Struttura Unione
È possibile utilizzare una parola chiave struct per definire una struttura. È possibile utilizzare una parola chiave union per definire un'unione.
A ogni membro all'interno della struttura viene assegnata una posizione di memoria univoca. Nell'unione, una posizione di memoria è condivisa da tutti i membri dei dati.
La modifica del valore di un membro dati non influirà sugli altri membri dati nella struttura. La modifica del valore di un membro di dati cambierà il valore di altri membri di dati nell'unione.
Ti consente di inizializzare più membri contemporaneamente. Ti consente di inizializzare solo il primo membro dell'unione.
La dimensione totale della struttura è la somma delle dimensioni di ogni membro di dati. La dimensione totale dell'unione è la dimensione del membro di dati più grande.
Viene utilizzato principalmente per memorizzare vari tipi di dati. Viene utilizzato principalmente per memorizzare uno dei tanti tipi di dati disponibili.
Occupa spazio per ogni membro scritto nei parametri interni. Occupa spazio per un membro con la dimensione massima scritta nei parametri interni.
Puoi recuperare qualsiasi membro alla volta. Puoi accedere a un membro alla volta nel sindacato.
Supporta array flessibili. Non supporta un array flessibile.

Vantaggi della struttura

Ecco i vantaggi / vantaggi dell'utilizzo della struttura:

  • Le strutture raccolgono più di un dato sullo stesso argomento nello stesso posto.
  • È utile quando si desidera raccogliere i dati di tipi di dati e parametri simili come nome, cognome, ecc.
  • È molto facile da mantenere in quanto possiamo rappresentare l'intero record utilizzando un unico nome.
  • Nella struttura, possiamo passare un set completo di record a qualsiasi funzione utilizzando un singolo parametro.
  • È possibile utilizzare una matrice di struttura per archiviare più record con tipi simili.

Vantaggi dell'unione

Ecco i vantaggi / vantaggi dell'utilizzo di Union:

  • Occupa meno memoria rispetto alla struttura.
  • Quando si utilizza union, è possibile accedere direttamente solo all'ultima variabile.
  • L'unione viene utilizzata quando è necessario utilizzare la stessa posizione di memoria per due o più membri di dati.
  • Ti consente di conservare i dati di un solo membro di dati.
  • Lo spazio allocato è uguale alla dimensione massima del membro dati.

Svantaggi della struttura

Ecco i contro / svantaggi dell'utilizzo della struttura:

  • Se la complessità del progetto IT supera il limite, diventa difficile da gestire.
  • La modifica di una struttura dati in un codice richiede modifiche in molti altri punti. Pertanto, le modifiche diventano difficili da monitorare.
  • La struttura è più lenta perché richiede spazio di archiviazione per tutti i dati.
  • Puoi recuperare qualsiasi membro alla volta nella struttura mentre puoi accedere a un membro alla volta nell'unione.
  • La struttura occupa lo spazio per ogni membro scritto nei parametri interni mentre l'unione occupa lo spazio per un membro con la dimensione più alta scritta nei parametri interni.
  • La struttura supporta un array flessibile. Union non supporta un array flessibile.

Svantaggi dell'unione

Ecco i contro / svantaggi dell'utilizzo di union:

  • Puoi utilizzare un solo membro del sindacato alla volta.
  • Tutte le variabili di unione non possono essere inizializzate o utilizzate con valori variabili alla volta.
  • L'unione assegna uno spazio di archiviazione comune a tutti i suoi membri.

PRINCIPALI DIFFERENZE:

  • A ogni membro all'interno della struttura viene assegnata una posizione di memoria univoca mentre nell'unione una posizione di memoria è condivisa da tutti i membri dei dati.
  • La modifica del valore di un membro di dati non influirà sugli altri membri di dati nella struttura, mentre la modifica del valore di un membro di dati cambierà il valore di altri membri di dati nell'unione.
  • La struttura viene utilizzata principalmente per memorizzare vari tipi di dati mentre l'unione viene utilizzata principalmente per memorizzare uno dei molti tipi di dati.
  • In struttura, puoi recuperare qualsiasi membro alla volta, mentre in unione puoi accedere a un membro alla volta.
  • La struttura supporta un array flessibile mentre l'unione non supporta un array flessibile.