Verband der C ++ (Union C ++)




Unions in C ++, Union C ++, Bericht, Kursarbeitunited Technologies Union Es hat seinen Ursprung in den 90er Jahren. Schwache Computer für unsere Zeit (Nun ihre Computer, und es kann nicht aufgerufen werden,), wenig Speicher (alle gemessenen Kilobyte). Festplatten für 40 Megabyte war fast ein Wunder der Technik, ogromennye Mengen an Informationen personifying, Handwerker, dass “Bohrloch” spezielle Software Speicher 80 MB (so war, dass ein wenig mehr). Jedes Byte des Speichers war mit einem Aufschlag, Ich hatte auf alles zu sparen. dass Gewerkschaft Variable wurde auch gedacht (und recht erfolgreich, wie werde ich erklären, unten) helfen dem Programmierer, um eine optimale und wirtschaftliche Programm zu machen, “essen” geringe Mengen an Speicher.

Um zu verstehen, was braucht die Bedeutung des Vereins zu erinnern, wie Variablen gespeichert werden. Verschiedene unterschiedliche Typen von Variablen oder die gleiche Art von Gruppe (wie int, lange und kurz) trotz der Arbeit mit dem gleichen Datentyp, (Ich meine die ganze) eine unterschiedliche Menge an Speicher in Bytes besetzen. lange in jedem Fall dauert es eine maximale Anzahl von Bytes in dem Speicher, zur gleichen Zeit in dem Speicher für eine Variable dieses Typs ist es möglich, den Wert zu notieren int oder kurz. Nehmen Sie einfach, dass nicht alle reservierten Bytes lange-und wird gefragt sein. Wenn Sie zum Beispiel setzen die Zahl der 325 in lange, zwei Bytes belegt (Es hängt von der Bitprozessor), und die übrigen Bytes werden mit Nullen gefüllt,.

Es ist in diesem Sinne erscheint Union, Bei dieser Anweisung teilt dem Compiler: “Ich werde einen Platz für den Datentyp mit einer maximalen Abfragespeicher reservieren, und ich werde selbst sortieren, wie und welchen Wert in sie zu setzen”.

Gewerkschaft – ist ein Datenformat, die ähnlich Struktur. es (Gewerkschaft) der Lage, in einen reservierten Speicherbereich verschiedene Arten von Daten speichert,. Aber zu einem bestimmten Zeitpunkt wird in Verbindung nur eine dieser Datentypen gespeichert und kann nur den Wert des Elements verwenden (Komponente). Syntaktisch definieren, die Union als (sehr ähnlich wie die Definition der Struktur):

Zugriff auf die Elemente der Vereinigung ist die gleiche, sowie auf die Elemente der Strukturen: Der Name des Vereins MyUnion , Punkt . und der Name des Elements, name1 .

Daten, die Speicherelemente Struktur (beispielsweise kurz, int, lange) wir können jederzeit zugreifen (mindestens eine, obwohl alle auf einmal). in Fusion Daten können entweder gelagert werden kurz, oder int, oder lange. beispielsweise:

Führen Sie das Programm:

Unions in C ++, Union C ++, Bericht, Kursarbeit

Wie Sie sehen können, Nachdem, nahmen wir den Wert im Element name3 Typ long int , Regel nicht mehr möglich, das Element zugreifen name1 . Dies liegt daran,, in ihrer Shared Memory bereits aufgezeichneten Wert long int, und der Variablentyp short int nicht in der Lage mit einer solchen Menge an Daten zu arbeiten,. Schematisch kann dargestellt werden als:

Unions in C ++, Union C ++, Bericht, Kursarbeit

deshalb, mit der Art der Daten wieder arbeiten short int Sie müssen das Element erneut zuweisen name1 neue Bedeutung. So stellt sich heraus, – Erinnerung an ein und demselben, und die Variablen in ihm platziert sind unterschiedlich. In welchem ​​Anruf – und solche Anfragen von diesem Speicherwert.

Die Elemente werden in Verbindung mit dem Speicher von einem Ort angeordnet, (wie es wurden einander überlagert), im Gegensatz zu den Strukturelementen (sie werden nacheinander im Speicher gespeichert sind, nacheinander).

Anwendung der Assoziation aufgrund der Notwendigkeit, Speicher zu sparen, wenn Sie brauchen, zu speichern und Datentypen verwenden, aber auf sie zuzugreifen, können Sie nicht gleichzeitig.

Wenn wir beschreiben eine Reihe von Variablen bringen sie nicht in Union, dann legte sie würde erfordern, 2 + 4 + 4 Bytes = 10 Byte. Das Spar. Und die Vereinigung nimmt 4 Byte. So viele wie 6 Byte gespeichert, natrambovav drei Variablen in einem Speichersegment.

Durch die Art und Weise ist zu beachten,, dass diese Technologie ist es gelungen, eine gute Fortsetzung zu erhalten, und in den modernen Sprachen überall dort eingesetzt, wo es notwendig ist, und nicht brauchen. SiŞarp, PHP, Delphi, modernen Erben C plus plus – sie verwenden alle diese Vereinigungen. Nur in der modernen Welt werden sie genannt Variante. die Variable Variante Sie können ganz einfach schieben nach oben 10 Byte (10 dies ist das Maximum für 32-Bit-Systemen unter realen Zahl). Demgemäß sind diese 10 Byte und die ganze Familie von Integer und Real, und Zeiger, Objekte, und Linie (mehr Griffe genau Strings oder Zeiger auf sie) fit.

Heute sind die Speichereinsparungen sind nicht so relevant, wie 15-20 Jahre. natürlich, niemand verbietet die Verwendung Union, aber warum? Wenn es bequemer für heute sind, bedeutet die Arbeit mit Speicher-Programmierer.

Es sollte auch angemerkt werden,, dass ein Programmspeicher mit einem Überschuss geladen auszuführen (dh. die Größe des Speichers zu programmieren zugewiesen, sehr oft mehr als nötig). Dies kann beobachtet werden,, Schreiben Sie ein Programm mit einer Variablen. es scheint – Variable 4 Byte, aber durch den Task-Manager in Windows-Software zu öffnen “irgendwie” Won 10 Kilobyte. Dies ist, wie moderne Betriebssystem, Aufteilung Speicher mit aller Macht. In der 90, ach, ein Luxus, und konnte nicht sein.

In der nächsten Stunde werden wir an, Bit-Felder in C ++. Nehmen Sie die Zeit, um ein Video über das Thema der Vereinigung zu sehen (Union) C ++:

Newsletter neue Lektionen über die Programmierung:

Datum
Seite
Verband der C ++ (Union C ++)
Wertung
51Star1Star1Star1Star1Star

Hinterlasse eine Antwort

Platz Code in Tags: <pre class="lang:c ++ dekodieren:true ">DEIN CODE</Vor>