Sindacati in c

Sindacati in c

“Proprio come le strutture, i sindacati sono anche dati definiti dall'utente, ma a differenza delle strutture, i membri dell'Unione condividono la stessa posizione di memoria e non hanno posizioni di memoria diverse. Se dichiariamo due variabili in una struttura e quindi controlliamo il loro indirizzo, vedremo che entrambi hanno indirizzi diversi, il che significa che i membri di una struttura ottengono diverse posizioni di memoria. Invece, dichiariamo le stesse due variabili in un sindacato e controlliamo i loro indirizzi; Si osserva che entrambi i loro indirizzi sono uguali, il che dimostra che entrambe le costanti condividono la stessa posizione di memoria. Nel caso della struttura, un numero intero prenderà quattro blocchi, ma in un sindacato, sia l'intero che il personaggio condividerà lo stesso blocco di memoria.

Una cosa da tenere a mente è che in un sindacato, i membri condivideranno la stessa posizione della memoria, il che significa che se le modifiche vengono apportate in un membro, si rifletteranno anche negli altri membri del sindacato. Le dimensioni dell'Unione sono prese in base alle dimensioni del più grande membro di un sindacato. È possibile accedere ai membri del sindacato tramite puntatori utilizzando l'operatore (->). Se vogliamo archiviare informazioni su più oggetti come libri e negozi, dovremo fare due strutture per ciascuno di essi. Perderà molta memoria. A tale scopo, vengono utilizzati i sindacati. I sindacati possono salvare le informazioni su più oggetti."

Sintassi

La sintassi per dichiarare un sindacato è la seguente:

La sintassi per i sintasi e la struttura è quasi la stessa. La differenza tra unione e struttura è che utilizziamo l'Unione delle parole chiave anziché la struttura per dichiarare i sindacati. Nella sezione variabili, possiamo vedere che abbiamo dichiarato più variabili di diversi tipi di dati. Questo è lo stesso delle strutture, ma nelle strutture, quelle variabili possono essere correlate a un solo oggetto, come un libro o uno studente o una classe, ecc. Ma nei sindacati, possiamo dichiarare variabili rilevanti per più di un singolo oggetto. Ad esempio, possiamo dichiarare la lunghezza di una tabella e anche il titolo del libro sulla tabella.

Esempio 1

In questo esempio, abbiamo creato un sindacato e dato il nome "test_union". Nel blocco variabili, abbiamo dichiarato due variabili come membri della nostra unione. Integer "x" e carattere "y". Con la fascia di chiusura, esiste una variabile di tipo Union “Test_Union."Possiamo anche dichiarare una variabile di tipo sindacale come nelle strutture. Con l'aiuto di "variabile1", possiamo accedere ai membri del nostro sindacato. All'interno della funzione principale (), mediante l'uso dell'operatore DOT, possiamo accedere alle variabili dichiarate nell'unione. Qui stiamo assegnando il valore "75" a "x."Nota che non abbiamo assegnato alcun valore alla nostra variabile" y ".

#includere
Union Test_Union

int x;
Char y;
variabile1;
int main ()

variabile1.x = 75;
printf ("x = %d \ n", variabile1.X);
printf ("y = %c \ n", variabile1.y);
restituzione 0;

Dopo l'esecuzione del nostro codice, otterremo l'output mostrato nella figura seguente. Abbiamo stampato "X" e il suo valore allo stesso modo; Abbiamo stampato "Y" e il suo valore contro di esso. La cosa che deve essere notificata è che non abbiamo assegnato alcun valore a y. Nel nostro output, possiamo vedere che il compilatore ha stampato "X" e un valore di "75" contro di esso. Ma contro "y", ha stampato "k."Potresti chiederti perché abbiamo questa capitale" k "come produzione per" y."Valore" 75 "per" x "non è un problema. Ma "Y" è un personaggio su cui il compilatore ha stampato il suo valore anche quando abbiamo passato un numero a "x."

Questo perché, come abbiamo discusso in precedenza, lo stesso blocco di memoria è condiviso dai membri che sono raggruppati in un sindacato. Abbiamo dichiarato "variabile1" per la nostra unione e abbiamo superato il valore usando quella variabile. Variabile1 assegnato il valore 75 a tutti i membri del sindacato. Int prese quel valore come numero e stampò lo stesso valore. Ma il personaggio prese quel valore come codice ASCII e convertì quel codice ASCII nel personaggio contro di esso. Il codice ASCII per il capitale "K" è "75", quindi ha sostituito "75" con "K."Questo è l'intero processo di unione che sta allocando lo stesso blocco di memoria alle variabili in esso.

Esempio 2

In questo caso, scopriremo come il sindacato utilizza la memoria. A tale scopo, abbiamo dichiarato un sindacato come Esempio_Union. In Esempio_Union, abbiamo dichiarato quattro costanti e ognuna con dati diversi. Abbiamo dichiarato int var1, char var2, doppio var3 e float var come membri della nostra unione. Nel metodo principale, abbiamo stampato un'istruzione con la dimensione della funzione (). La funzione sizeof () è una funzione predefinita nel linguaggio c che ottiene le dimensioni di qualsiasi oggetto nel nostro codice. L'abbiamo superato il nome della nostra unione perché vogliamo ottenere le dimensioni che la nostra unione ha occupato.

#includere
Union Esempio_Union

int var1;
char var2;
doppio var3;
float var4;
;
int main ()

printf ("%ld \ n", sizeof (Union Esempio_union));
restituzione 0;

Questo è l'output dopo la raccolta del nostro codice. Otterremo l'output di 8. Nel mio sistema, la dimensione dell'intero è 4 byte, la dimensione del carattere è di 1 byte, la dimensione di un doppio è di 8 byte e la dimensione di un galleggiante è di nuovo 4 byte. Nel nostro caso, la dimensione di un doppio è 8, che è la più grande di tutte le dimensioni, quindi il compilatore ha assegnato la dimensione 8 alla nostra unione. Ora possiamo comprendere meglio che la dimensione della variabile più alta è assegnata a tutti i dati e la somma delle loro dimensioni non è utilizzata dal compilatore come nel caso della struttura. Ecco perché otterremo il risultato 8 come nostro output.

Conclusione

In questa guida, abbiamo discusso dei sindacati in lingua C. Solo per capire il concetto di sindacati, si può dire che i sindacati sono quasi gli stessi delle strutture. Ma la differenza principale è l'allocazione della memoria. È molto efficace quando si scrive un codice complesso perché, a quel tempo, un programmatore si concentra sull'efficienza del codice. Un buon programmatore cerca sempre di occupare la minima memoria del sistema con il suo codice; I sindacati li aiutano a farlo. Abbiamo fornito del nostro meglio per aiutarti a capire i sindacati implementando e spiegando esempi. Alla fine dell'argomento, possiamo dire che usare i sindacati è un buon approccio per gestire più record e scrivere codice ottimizzato e sintonizzato sulle prestazioni. Aiuterà anche il programmatore a ottimizzare il codice per prestazioni migliori.