Differenza chiave – Struttura vs unione in C
Un array è un dato strutturato supportato dal linguaggio C. Un array può essere utilizzato per memorizzare elementi di dati dello stesso tipo. Se c'è un'istruzione come int mark [10]; quindi i segni sono una matrice che può memorizzare dieci segni e tutti sono interi. A volte è necessario memorizzare elementi di dati di tipo diverso nella stessa posizione di memoria. Ad esempio, un dipendente può avere un ID dipendente, nome, reparto, età ecc. Sono di diversi tipi di dati. Pertanto, è necessario disporre di un metodo per memorizzare vari elementi di dati come una singola unità. Le strutture e le unioni in C vengono utilizzate per memorizzare elementi di dati di tipo diverso nella stessa posizione di memoria. Una struttura e un'unione sono simili ma si differenziano principalmente per l'allocazione della memoria. La memoria richiesta per memorizzare una variabile di struttura è la somma delle dimensioni della memoria di tutti i membri. La memoria richiesta per memorizzare una variabile union è la memoria richiesta per l'elemento più grande nell'unione. Questa è la differenza chiave tra struttura e unione in C. Questo articolo discute la differenza tra struttura e unione in C.
Cos'è la struttura in C?
Una struttura è un tipo di dati definito dall'utente in C. Aiuta a combinare elementi di dati di tipi diversi. Una struttura può rappresentare record. Uno studente può avere student_id, student_name ecc. Invece di memorizzare ogni variabile separatamente, tutti questi diversi elementi di dati possono essere compattati in una singola unità utilizzando una struttura. Viene definito utilizzando la parola chiave 'struct'. In una struttura, è possibile accedere a tutti i suoi membri in qualsiasi momento. Di seguito viene creato un tipo di dati derivato struct Student.
struct Student {
intstudent_id;
char student_name[20];
};
Per la struttura sopra, le variabili possono essere dichiarate come segue.
struct Student studente1, studente2, studente3;
Ci sono due metodi per accedere ai membri della struttura. Ovvero utilizzando l'operatore membro (.) e l'operatore puntatore struttura (->). È possibile accedere ai membri utilizzando nome_variabile_struttura. nome del membro. Se il programmatore vuole accedere al nome dello studente 2, allora può scrivere la dichiarazione come printf(student2.student_namename);
Fai riferimento al programma sottostante con una struttura.
Figura 01: Programma C con strutture
Secondo il programma sopra, Student è una struttura. Contiene ID_studente e nome_studente. Nel programma principale vengono dichiarate due variabili di tipo struttura. Si chiamano studente1 e studente2. L'id dello studente1 viene assegnato con il valore 1 utilizzando l'operatore membro come student1.student_id=1. Il nome "Ann" è una stringa. Pertanto, viene copiato nel membro student_name utilizzando la funzione di copia della stringa strcpy. L'ID e il nome vengono assegnati a student2 in modo simile. Infine, questi valori vengono stampati utilizzando l'operatore membro.
La quantità di memoria richiesta per memorizzare una variabile di struttura è la somma della dimensione della memoria di tutti i membri. Student_id contiene 4 byte e student_name contiene 20 byte (un byte ciascuno per un carattere). I 24 byte totali sono la somma della dimensione della memoria richiesta dalla struttura.
Cos'è l'unione in C?
Un'unione è un tipo di dati definito dall'utente in C. Aiuta a memorizzare diversi tipi di dati nella stessa posizione di memoria. Un libro può avere proprietà come book_name, prezzo ecc. Invece di creare variabili per ciascuno di essi, è possibile utilizzare un'unione per compattare tutti i diversi tipi di dati in un'unica unità utilizzando un'unione. Viene definito utilizzando la parola chiave 'unione'. Di seguito viene creata un'unione di dati derivati Book.
unionBook{
nome carattere[20];
doppio prezzo;
};
Per l'unione di cui sopra, le variabili possono essere dichiarate come segue.
unione Prenota libro1, libro2;
Ci sono due metodi per accedere ai membri del sindacato. Ovvero utilizzando l'operatore membro (.) e l'operatore puntatore struttura (->). È possibile accedere ai membri utilizzando union_variable_name. nome del membro. Se il programmatore vuole accedere al nome del libro1, allora può scrivere l'istruzione come printf(nomedellibro1);
Fai riferimento al programma sottostante con un sindacato.
Figura 02: Programma in C che utilizza union
Secondo il programma di cui sopra, il Libro è un'unione. Il book1 è una variabile di tipo union. Al nome e al prezzo vengono assegnati valori. In union, è possibile accedere solo a uno dei suoi membri alla volta e tutti gli altri membri avranno valori spazzatura. Il valore di id non viene stampato correttamente ma il valore del prezzo viene stampato correttamente.
Figura 03: Programma C modificato con union
Secondo il programma di cui sopra, Book è un'unione. Il libro1 e il libro2 sono variabili di tipo unione. Innanzitutto, viene assegnato il valore per il nome del libro1 e viene stampato. Quindi viene assegnato il valore per il nome del libro2 e viene stampato. Tutti i membri vengono stampati correttamente perché viene utilizzato un membro alla volta. La memoria richiesta per archiviare un'unione è la memoria richiesta per l'elemento più grande dell'unione. Nel programma sopra, la variabile del nome è di 20 byte. È più grande del prezzo. Quindi, l'allocazione di memoria per l'unione è di 20 byte.
Quali sono le somiglianze tra struttura e unione in C?
- Sia struttura che Unione in C sono tipi di dati definiti dall'utente.
- Sia Structure che Union in C possono essere usati per memorizzare diversi tipi di dati nella stessa locazione di memoria.
Qual è la differenza tra struttura e unione in C?
Struttura vs Unione in C |
|
La struttura è un tipo di dati definito dall'utente in linguaggio C che consente di combinare insieme dati di tipi diversi. | Union è un tipo di dati definito dall'utente in linguaggio C che consente di combinare insieme dati di tipi diversi. |
Accessibilità | |
In una struttura, tutti i suoi membri sono accessibili in qualsiasi momento. | In un'unione, è possibile accedere solo a uno dei suoi membri alla volta e tutti gli altri membri conterranno valori spazzatura. |
Assegnazione della memoria | |
La memoria richiesta per memorizzare una variabile di struttura è la somma delle dimensioni della memoria di tutti i membri. | La memoria richiesta per memorizzare una variabile union è la memoria richiesta per l'elemento più grande nell'unione. |
Parola chiave | |
La parola chiave usata per definire una struttura è 'struct'. | La parola chiave usata per definire un'unione è 'unione'. |
Riepilogo – Struttura vs Unione in C
Un array viene utilizzato per memorizzare gli elementi di dati dello stesso tipo. A volte è necessario memorizzare elementi di dati di tipo diverso nella stessa posizione di memoria. Il linguaggio di programmazione C fornisce struttura e unione per svolgere questo compito. Entrambi sono tipi di dati definiti dall'utente. La memoria richiesta per memorizzare una variabile di struttura è la somma delle dimensioni della memoria di tutti i membri. La memoria richiesta per memorizzare una variabile union è la memoria richiesta per l'elemento più grande nell'unione. Questa è la differenza tra struttura e unione in C.