C++-Union-Beispiele

C Union Beispiele



Eine Union ist ein spezieller Klassentyp in C++, der die Speicherung verschiedener Datentypen an einem gemeinsam genutzten Speicherort ermöglicht. Im Gegensatz zu Strukturen, bei denen normalerweise jeder Teil seinen Speicher erhält, ermöglichen Unions, dass die verschiedenen Datenteile denselben Speicherort verwenden. Diese Eigenschaft macht Gewerkschaften besonders nützlich, wenn die Speichereffizienz Priorität hat und jeweils nur auf eines der Mitglieder zugegriffen werden muss. In diesem Artikel werden wir uns mit dem Konzept von Unions in C++ befassen und mehrere Beispiele untersuchen, die ihren Nutzen in verschiedenen Szenarien demonstrieren.

Syntax:

Eine Union ist ein vom Benutzer definierter Typ, der die Speicherung verschiedener Datentypen an einem gemeinsam genutzten Speicherort ermöglicht. Die Verwendung einer Union folgt einer Syntax, die mit einer Struktur identisch ist.







Die grundlegende Syntax lautet wie folgt:



Union Gewerkschaftsname {

// Mitgliedserklärungen

Datentyp1 Mitglied1 ;

DataType2-Mitglied2 ;

//......

} ;

Hier dient „UnionName“ als Bezeichner für die Union, die einen eindeutigen Namen zur Referenzierung dieses spezifischen benutzerdefinierten Typs bereitstellt. Die Datentypen der Gewerkschaftsmitglieder werden als „DataType1“, „DataType2“ usw. bezeichnet. Diese Datentypen bezeichnen die verschiedenen Arten von Informationen, die innerhalb der Union gespeichert werden können. Jedes Mitglied innerhalb der Union, das mit Namen wie „Mitglied1“, „Mitglied2“ usw. bezeichnet wird, stellt ein bestimmtes Datenelement dar.



Wir verstehen jetzt die grundlegende Syntax. Lassen Sie uns nun einige Beispiele verwenden, um dies besser zu verstehen.





Beispiel 1: Grundlegende Union-Verwendung

Das erste Beispiel veranschaulicht die grundlegende Verwendung von Unions in C++ und zeigt, wie sie die gemeinsame Nutzung von Speicherplatz zwischen verschiedenen Datentypen innerhalb einer einzelnen Struktur ermöglichen.

Hier ist ein Beispiel:



#include

Verwenden des Namensraums std ;

Union ArrayUnion {

int intArray [ 5 ] ;

schweben floatArray [ 5 ] ;

} ;

int hauptsächlich ( ) {

ArrayUnion arrayUnion ;

für ( int ich = 0 ; ich < 5 ; ++ ich ) {

arrayUnion. intArray [ ich ] = ich * 2 ;

}

cout << „Int-Array:“ ;

für ( int ich = 0 ; ich < 5 ; ++ ich ) {

cout << ' ' << arrayUnion. intArray [ ich ] ;

}

cout << endl ;

für ( int ich = 0 ; ich < 5 ; ++ ich ) {

arrayUnion. floatArray [ ich ] = ich * 1,5f ;

}

cout << „Float-Array:“ ;

für ( int ich = 0 ; ich < 5 ; ++ ich ) {

cout << ' ' << arrayUnion. floatArray [ ich ] ;

}

cout << endl ;

zurückkehren 0 ;

}

In diesem C++-Codeausschnitt verwenden wir eine Union namens „MyUnion“, die drei verschiedene Datenelemente enthält: eine Ganzzahl (intValue), eine Gleitkommazahl (floatValue) und ein Zeichen (charValue). Aufgrund der Fähigkeit einer Gewerkschaft, einen Speicherplatz gemeinsam zu nutzen, darf zu einem bestimmten Zeitpunkt nur eines dieser Mitglieder aktiv sein.

Innerhalb der Funktion „main“ deklarieren wir eine Instanz der Union, nämlich „myUnion“. Zuerst setzen wir den Wert des ganzzahligen Elements auf 42 und verwenden „cout“, um ihn auszugeben. Anschließend weisen wir dem Member „floatValue“ den Gleitkommawert 3,14 zu und drucken ihn aus. Zuletzt weisen wir dem Mitglied „charValue“ das Zeichen „A“ zu und drucken es aus. Es ist wichtig zu bedenken, dass die Änderung eines Gewerkschaftsmitglieds Auswirkungen auf die Werte anderer Mitglieder haben kann, da alle Gewerkschaftsmitglieder denselben Speicherort teilen. Der Code schließt mit der Rückgabe von 0, was eine erfolgreiche Ausführung bedeutet.

Beispiel 2: Union mit Struct

Eine Struktur ist ein Datentyp in C++, den Benutzer erstellen können, um Variablen verschiedener Typen unter einem einheitlichen Namen zu kombinieren. Die Kombination einer Union mit einer Struktur kann nützlich sein, wenn wir eine Datenstruktur erstellen möchten, die verschiedene Datentypen enthalten kann und jeder Typ einem bestimmten Feld zugeordnet ist. Diese Paarung ermöglicht die Entwicklung komplexer Datenstrukturen mit vielfältigen Darstellungen.

Hier ist ein Beispiel für die Verwendung einer Union innerhalb einer Struktur in C++:

#include

Verwenden des Namensraums std ;

Struktur Punkt {

int s1 ;

int s2 ;

} ;

Union Form {

int Seiten ;

schweben Radius ;

Punktmittelpunkt ;

} ;

int hauptsächlich ( ) {

Form formen ;

Form. Seiten = 5 ;
cout << „Seiten:“ << Form. Seiten << endl ;

Form. Radius = 6,0f ;
cout << „Radius:“ << Form. Radius << endl ;

Form. Center = { 10 , zwanzig } ;
cout << 'Center: (' << Form. Center . s1 << ',' << Form. Center . s2 << ')' << endl ;

zurückkehren 0 ;

}

In diesem Code definieren wir ein C++-Programm, das eine Union und eine Struktur verwendet, um verschiedene Aspekte einer geometrischen Form darzustellen. Zuerst deklarieren wir eine „Point“-Struktur, die aus zwei ganzzahligen Elementen „s1“ und „s2“ besteht, die die Koordinaten eines Punktes in einem 2D-Raum darstellen. Dann definieren wir eine „Union“ namens „Shape“, die aus drei Mitgliedern besteht: einer Ganzzahl „sides“, einem Gleitkomma „radius“ und einer Struktur „Point“ namens „center“. Wenn wir zur Funktion „main“ übergehen, instanziieren wir ein „Shape“-Objekt mit dem Namen „shape“. Anschließend demonstrieren wir die Vielseitigkeit der Gewerkschaft, indem wir ihren verschiedenen Mitgliedern Werte zuweisen. Zunächst stellen wir die Anzahl der Seiten auf 5 ein und drucken das Ergebnis aus. Als nächstes weisen wir der Form einen Radius von 6,0 zu und geben den Radius aus. Abschließend weisen wir der Form einen Mittelpunkt mit den Koordinaten (10, 20) zu und drucken die Koordinaten des Mittelpunkts aus.

Beispiel 3: Union mit Enum

In C++ dienen Aufzählungen, allgemein als Enumerationen bezeichnet, dazu, eine Sammlung benannter Integralkonstanten zu definieren. Die Kombination von Aufzählungen mit Unions kann in Szenarien nützlich sein, in denen wir eine Variable darstellen möchten, die verschiedene Typen annehmen kann, die jeweils einem bestimmten Aufzählungswert zugeordnet sind.

Hier ist ein Beispiel:

#include

Verwenden des Namensraums std ;

Aufzählung Datentyp {

GANZE ZAHL ,

SCHWEBEN ,

VERKOHLEN

} ;

Union Datenwert {

int intValue ;

schweben floatValue ;

verkohlen charValue ;

} ;

Struktur Daten {

DataType-Typ ;

DataValue-Wert ;

} ;

int hauptsächlich ( )

{

Daten data1 , Daten2 , Daten3 ;

Daten1. Typ = GANZE ZAHL ;
Daten1. Wert . intValue = 42 ;

Daten2. Typ = SCHWEBEN ;
Daten2. Wert . floatValue = 3.14f ;

Daten3. Typ = VERKOHLEN ;
Daten3. Wert . charValue = 'A' ;

cout << „Daten 1:“ << Daten1. Wert . intValue << endl ;
cout << „Daten 2:“ << Daten2. Wert . floatValue << endl ;
cout << „Daten 3:“ << Daten3. Wert . charValue << endl ;

zurückkehren 0 ;

}

Für dieses Beispiel haben wir ein Programm, das Aufzählungen, Unions und Strukturen verwendet, um eine flexible Datenstruktur zu erstellen, die verschiedene Arten von Werten aufnehmen kann. Die Aufzählung „DataType“ ist so definiert, dass sie drei grundlegende Datentypen darstellt: INTEGER, FLOAT und CHAR. Die Aufzählung verbessert die Lesbarkeit und Wartbarkeit des Codes, indem sie einen Satz benannter Integralkonstanten bietet.

Dann erstellen wir eine Union namens „DataValue“ mit drei Mitgliedern: „charValue“ vom Typ char, „floatValue“ vom Typ float und „intValue“ vom Typ int. Bei einer Union teilen sich diese Mitglieder einen gemeinsamen Speicherort, der es der Union ermöglicht, die Werte unterschiedlicher Typen austauschbar aufzunehmen. Anschließend wird die Struktur „Data“ erstellt, die aus zwei Mitgliedern besteht: einem „DataType“-Enumerator namens „type“ und einer „DataValue“-Union namens „value“. Diese Struktur ermöglicht es uns, einen Datentyp mit seinem entsprechenden Wert zu verknüpfen und so eine strukturierte Darstellung bereitzustellen.

In der Funktion „main“ instanziieren wir drei Instanzen der Struktur „Data“: „data1“, „data2“ und „data3“. Wir weisen diesen Instanzen die Werte zu, indem wir den Datentyp angeben und den entsprechenden Wert innerhalb der Union festlegen. Beispielsweise wird „data1“ ein INTEGER-Typ mit dem Wert 42 zugewiesen. Schließlich verwenden wir die „cout“-Anweisungen, um die Werte auszugeben, die in jeder „Data“-Instanz gespeichert sind. Das Programm gibt den ganzzahligen Wert von „data1“, den Gleitkommawert von „data2“ und den Zeichenwert von „data3“ aus.

Dieses Beispiel veranschaulicht, wie die Kombination von Enumerationen, Unions und Strukturen verwendet werden kann, um eine vielseitige und typsichere Datendarstellung in C++ zu erstellen.

Abschluss

C++-Unions bieten einen leistungsstarken und flexiblen Mechanismus zur Verwaltung der verschiedenen Datentypen in einem einzigen Speicherbereich. Die in diesem Artikel dargestellten Beispiele verdeutlichen die Anpassungsfähigkeit und Wirksamkeit von Gewerkschaften bei der Bewältigung einer Reihe von Szenarien. Von den grundlegenden Verwendungszwecken, die die Austauschbarkeit von Datentypen veranschaulichen, bis hin zu komplexeren Anwendungen mit Strukturen und Aufzählungen unterstreichen diese Beispiele die Effizienz und Anpassungsfähigkeit, die Unions in die C++-Programmierung bringen.