467 Stimmen

Unterschied zwischen einer Struktur und einem Verband

Gibt es ein gutes Beispiel, das den Unterschied zwischen einer struct und eine union ? Im Grunde weiß ich, dass struct verwendet den gesamten Speicher seines Mitglieds und union verwendet den größten Speicherplatz der Mitglieder. Gibt es weitere Unterschiede auf Betriebssystemebene?

1voto

Es wird empfohlen, Strukturen zu verwenden, wenn wir etwas modellieren müssen, das eine Gruppe unabhängiger Attribute hat, und Unions sollten verwendet werden, wenn eine Entität viele Formen hat und jeweils nur in einer Form existieren kann.

Schauen wir uns 2 Stellen an, an denen sie angewendet werden könnten

Sie müssen die Werte eines Autos speichern und aktualisieren. Dazu müssen wir alle Attribute eines Fahrzeugs wie Modell, Kilometerstand, Preis und Kraftstoffart aufzeichnen. Diese Werte sind in einem Auto immer vorhanden und hängen nicht von anderen Werten ab. Daher benötigen wir einen Datentyp, der nicht nur alle unsere Attribute speichert, sondern auch ihre ordnungsgemäße Aktualisierung gewährleistet. Derartige Aufgaben können mit Hilfe von Strukturen erledigt werden.

struct car{
    char model[];
    int mileage;
    int price;
    char fuel_type[];
};

Ein Unternehmen muss die Daten einer großen Anzahl von Kunden zur Zahlungsüberprüfung erfassen. Um die Integrität der Daten und die Sicherheit der Kunden zu gewährleisten, wird ein Unternehmen angewiesen, so wenig Details wie möglich von einer Person zu erfassen. Diese Angaben können entweder Ihre PAN-Nummer, Ihre Kontonummer oder Ihre Wähler-ID sein. Da wir nun eines dieser Details erfassen und gleichzeitig speichereffizient sein müssen, können wir hier Union verwenden. Sie speichert nur den einzigen Wert, der ihr zur Verfügung gestellt wird.

union verification_details{
    char account_number[10];
    char PAN[10];
    char voter_id[10];
};

Ich habe den folgenden Artikel gefunden, der dies recht gut erklärt: Unterschied zwischen Struktur und Union

0voto

Keno Punkte 126

Gibt es ein gutes Beispiel für den Unterschied zwischen einer Struktur und einer Vereinigung?

Ein praktisches Beispiel aus der Anwendung eines eingebetteten Systems wäre das folgende. Es verwendet nur union aber es zeigt deutlich die Funktionalität von union .

Die Schreibfunktion für das I2C-Kommunikationsprotokoll verwendet union Typ, der für die Datenspeicherung verwendet wird, wenn Daten aus einem übergebenen Array abgerufen werden.

union data
{
    uint32_t packet;
    uint8_t  packetbyte[4];
} txdata;

Das Array, das per Zeiger an die Schreibfunktion übergeben wird, enthält Elemente mit einer Größe von einem Byte. In for Schleife werden diese Bytes in vier Schritten einzeln extrahiert und in einzelnen Elementen der txdata.packetbyte Mitglied.

Nach Ende der Schleife, txdata.packet enthält 4 Bytes an Daten, die fortlaufend in txdata Gewerkschaft. Und als letzter Schritt der Datenübertragung über den Kommunikationsbus, txdata.packet wird in einen 32-Bit-Puffer geschrieben, der nach dem Beschreiben eine Schreibsequenz einleitet. Dann wird der Inhalt zurückgesetzt durch txdata.packet = 0 bevor die nächste for-Schleife ausgeführt wird.

Auf diese Weise kann der I2C-Master 32-Bit-Pakete erneut senden, bis die Eingangsdaten gesendet wurden und die Schreibfunktion beendet ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X