Associazione di C ++ (unione C ++)

Associazione di C ++ (unione C ++)
5 (100%) 1 votazione




I sindacati in C ++, unione C ++, rapporto, lavori di corsoТехнология объединений unione Ha le sue origini negli anni '90. calcolatore Debole per i nostri tempi (Ora i loro computer e non può essere chiamato), мало памяти (kilobyte tutti misurati). Hard Disk per 40 megabyte era quasi un miracolo della tecnologia, personificando ogromennye quantità di informazioni, artigiani che “alesaggio” un software speciale per lo stoccaggio 80 MB (così che era un po 'di più). Ogni byte di memoria era ad un premio, Ho dovuto risparmiare su tutto. che unione variabile è stata inoltre destinata (e con successo, come spiegherò di seguito) aiutare il programmatore a rendere il programma ottimale ed economico, “mangiare” piccole quantità di memoria.

Чтобы понять в чем смысл объединения нужно вспомнить как хранятся переменные. Vari tipi di variabili o lo stesso tipo di gruppo (come int, lungo e corto) nonostante il lavoro con lo stesso tipo di dati, (Voglio dire tutta la) занимают в памяти разное количество байт. lungo in ogni caso ci vuole un numero massimo di byte nella memoria, при этом в память для переменной этого типа вполне можно записать значения int o corto. basta avere, byte che non tutti riservati lungo-e sarà della domanda. Se si mettono ad esempio, il numero di 325 in lungo, due byte sono occupati (Essa dipende dal processore po '), ed i byte rimanenti vengono riempiti con zeri.

È in questo senso appare unione, Per questa dichiarazione dice al compilatore: “Зарезервируй мне место для типа данных с максимальным запросом объема памяти, e io a ordinare sé, come e quale valore da mettere in loro”.

unioneэто такой формат данных, che è simile struttura. esso (unione) in grado di memorizzare all'interno di una zona di memoria riservata vari tipi di dati. Ma in un dato momento è memorizzato in associazione solo uno di questi tipi di dati, e può utilizzare solo il valore dell'elemento (componente). Sintatticamente definire l'unione come (molto simile alla definizione della struttura):

Доступ к элементам объединения осуществляется так же, как и к элементам структур: Il nome dell'associazione MyUnion , punto . и имя элемента nome1 .

dati, che memorizzano gli elementi struttura (per esempio corto, int, lungo) siamo in grado di accedere in qualsiasi momento (almeno un, se tutti in una volta). in fusione могут храниться данные либо corto, o int, o lungo. per esempio:

Eseguire il programma:

I sindacati in C ++, unione C ++, rapporto, lavori di corso

Come si può vedere, dopo, как мы записали значение в элемент NAME3 tipo long int , normalmente più possibile accedere all'elemento nome1 . Questo perché, что в их memoria condivisa уже записано значение long int, а переменная типа short int in grado di lavorare con un volume di dati. Schematicamente esso può essere rappresentato come:

I sindacati in C ++, unione C ++, rapporto, lavori di corso

pertanto, чтобы опять работать с данными типа short int необходимо снова присвоить элементу nome1 nuovo significato. Così si scopre – la memoria di una stessa, e le variabili in essa sono posti diversi. К какой обращаемсятакая и запрашивает из этой памяти значение.

Элементы объединения располагаются в памяти начиная с одного места (come fosse sovrapposti uno sull'altro), in contrasto con gli elementi strutturali (sono memorizzati nella memoria consecutivamente, uno dopo l'altro).

Applicazione di associazione a causa della necessità di risparmiare memoria, quando è necessario memorizzare e utilizzare i tipi di dati, но обращаться к ним можно не одновременно.

Se si descrive un insieme di variabili non li stanno portando in unione, poi mettendo loro richiederebbe 2 + 4 + 4 byte = 10 byte. Questo risparmio. E l'unione prende 4 byte. Come molti come 6 byte salvato, натрамбовав три переменные в один отрезок памяти.

Tra l'altro va rilevato, che questa tecnologia è riuscita a ottenere un buon proseguimento, и в современных языках используется везде где нужно и не нужно. SiŞarp, PHP, Delphi, eredi moderna C plus plus – usano tutte queste associazioni. Solo nel mondo moderno sono chiamati variante. В переменную variante Si può facilmente spingere fino 10 byte (10 questo è il massimo per i sistemi a 32 bit con il numero reale). Di conseguenza, questi 10 byte e l'intera famiglia di numero intero e reale, e puntatori, oggetti, e la linea (gestisce più precisamente stringhe o puntatori a loro) adattarsi.

Oggi, il risparmio di memoria non sono così rilevanti, come 15-20 anni. naturalmente, никто не запрещает использовать unione, ma perché? Se ci sono più conveniente per oggi significa lavorare con programmatore di memoria.

Va inoltre notato, che per eseguire una memoria di programma caricato con eccesso (vale a dire. per programmare la quantità di memoria allocata, molto spesso più del necessario). Это можно наблюдать, scrivere un programma con una variabile. sembrerebbe – variabile 4 byte, ma aprendo il Task Manager di Windows nel software “in qualche modo” заняла 10 килобайт. Questo è il sistema operativo che è moderno, l'allocazione di memoria con una vendetta. Nel 90, ahimè, un lusso e non poteva essere.

Nella prossima lezione vedremo campi di bit in C ++. Prendetevi il tempo per guardare un video sul tema della Association (unione) C ++:

Newsletter nuove lezioni sulla programmazione:

Lascia un Commento

Inserire il codice nei tag: <pre class="lang:C ++ decodifica:true ">IL TUO CODICE</pre>