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?
Antworten
Zu viele Anzeigen?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
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.
- See previous answers
- Weitere Antworten anzeigen