Differenza tra struttura e unione in C

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'è una dichiarazione come segni di int [10]; quindi i segni sono una matrice che può contenere dieci segni e tutti sono interi. A volte è necessario memorizzare elementi di dati di tipi diversi nella stessa posizione di memoria. Ad esempio, un dipendente può avere un ID dipendente, un nome, un dipartimento, un'età, ecc. Sono di tipi di dati diversi. Pertanto, è necessario disporre di un metodo per memorizzare vari elementi di dati come una singola unità. Strutture e unioni in C vengono utilizzate per memorizzare elementi di dati di tipi diversi nella stessa posizione di memoria. Una struttura e un'unione sono simili ma si differenziano principalmente a causa dell'allocazione di 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 unione è la memoria richiesta per l'elemento più grande dell'unione. Questo è la differenza principale tra struttura e unione in C. Questo articolo discute la differenza tra struttura e unione in C.

CONTENUTO

1. Panoramica e differenza chiave
2. Cos'è la struttura in C
3. Cos'è l'Unione in C
4. Somiglianze tra struttura e unione in C
5. Confronto affiancato - Struttura contro Unione in C in forma tabulare
6. Sommario

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 i record. Uno studente può avere student_id, student_name ecc. Invece di memorizzare ciascuna variabile separatamente, tutti questi diversi elementi di dati possono essere compatti in una singola unità utilizzando una struttura. È definito utilizzando la parola chiave "struct". In una struttura, è possibile accedere a tutti i suoi membri in qualsiasi momento. Di seguito viene creata una struttura di tipo derivato struct Student.

struct Student

intstudent_id;

char student_name [20];

;

Per la struttura di cui sopra, le variabili possono essere dichiarate come segue.

struct Student student1, student2, student3;

Esistono due metodi per accedere ai membri della struttura. Ciò avviene utilizzando l'operatore membro (.) E l'operatore del puntatore della struttura (->). È possibile accedere ai membri utilizzando structure_variable_name. nome del membro. Se il programmatore vuole accedere al nome dello studente 2, allora può scrivere l'istruzione come printf (student2.student_namename);

Fare riferimento al programma seguente con una struttura.

Figura 01: programma C con strutture

Secondo il programma di cui sopra, lo studente è una struttura. Contiene student_id e student_name. Due variabili del tipo di struttura sono dichiarate nel programma principale. Si chiamano student1 e student2. L'id dello studente1 viene assegnato con il valore 1 utilizzando l'operatore membro come studente1.student_id = 1. Il nome "Ann" è una stringa. Pertanto, viene copiato nel membro student_name utilizzando la funzione di copia stringa strcpy. L'id e il nome sono assegnati a student2 in un modo simile. Infine, quei valori vengono stampati usando l'operatore membro.

La quantità di memoria richiesta per memorizzare una variabile di struttura è la somma delle dimensioni della memoria di tutti i membri. Lo student_id contiene 4 byte e student_name contiene 20 byte (un byte ciascuno per un carattere). Il totale di 24 byte è la somma delle dimensioni della memoria richieste 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 ognuna di esse, è 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 "union". Di seguito viene creato un libro di unione dati derivato.

unionBook

nome del carattere [20];

doppio prezzo;

;

Per la suddetta unione, le variabili possono essere dichiarate come segue.

union Book book1, book2;

Ci sono due metodi per accedere ai membri del sindacato. Ciò avviene utilizzando l'operatore membro (.) E l'operatore del puntatore della 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 (book1.name);

Fare riferimento al programma seguente con un sindacato.

Figura 02: programma C usando union

Secondo il programma di cui sopra, il libro è un'unione. Il libro1 è una variabile di tipo union. Il nome e il prezzo sono valori assegnati. In unione, è possibile accedere a uno solo dei suoi membri alla volta e tutti gli altri membri avranno valori obsoleti. Il valore dell'ID non viene stampato correttamente ma il valore del prezzo viene stampato correttamente.

Figura 03: programma C modificato con unione

Secondo il programma di cui sopra, Book è un'unione. Il libro1 e il libro2 sono variabili di tipo unione. Innanzitutto, il valore per il nome book1 viene assegnato e viene stampato. Quindi il valore per il nome book2 viene assegnato e viene stampato. Tutti i membri vengono stampati correttamente perché viene utilizzato un membro alla volta. La memoria richiesta per memorizzare un sindacato è la memoria richiesta per il più grande elemento dell'unione. Nel programma precedente, la variabile name è 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 Structure che Union in C sono tipi di dati definiti dall'utente.
  • Sia la struttura che l'unione in C possono essere utilizzate per memorizzare diversi tipi di dati nella stessa posizione di memoria.

Qual è la differenza tra struttura e unione in C?

Struttura contro Unione in C

Structure è 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 a uno solo dei suoi membri alla volta e tutti gli altri membri conterranno valori obsoleti.
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 unione è la memoria richiesta per l'elemento più grande dell'unione.
 Parola chiave
La parola chiave utilizzata per definire una struttura è 'struct'. La parola chiave utilizzata per definire un'unione è "unione".

Sommario - 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 tipi diversi 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 unione è la memoria richiesta per l'elemento più grande dell'unione. Questa è la differenza tra struttura e unione in C.

Riferimento:

1. Punto, esercitazioni. "Strutture in C.", Punto tutorial, 15 agosto 2017. Disponibile qui 
2. Point, Tutorials. "Sindacati in C." , Punto tutorial, 15 agosto 2017. Disponibile qui