Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C-Unions erklärt: Definition, Nutzung & Vergleich mit Strukturen

C-Unions erklärt

Lernen Sie, wie man C-Unions definiert, erstellt und darauf zugreift, und entdecken Sie, warum sie sich in Speicherlayout und Anwendung von Strukturen unterscheiden.

Eine Union ist ein benutzerdefinierter Typ in C, der – im Gegensatz zu einem Struct – immer nur einen seiner Mitgliedswerte gleichzeitig halten kann. Dies macht Unions ideal für speichereffiziente Datenrepräsentationen und Type-Punning in der Low-Level-Programmierung.


Eine Union definieren

Verwenden Sie das Schlüsselwort union, um einen neuen Typ zu deklarieren. Zum Beispiel:

union Car {
    char name[50];
    int price;
};

Der obige Code erstellt einen abgeleiteten Typ union Car, der entweder einen 50-Zeichen-String oder einen Integer-Preis speichern kann.


Union-Variablen erstellen

Die Definition einer Union allokiert keinen Speicher. Um sie zu nutzen, deklarieren Sie Variablen dieses Typs:

union Car car1, car2, *car3;

Alternativ können Sie Definition und Variablendeklaration kombinieren:

union Car {
    char name[50];
    int price;
} car1, car2, *car3;

In beiden Beispielen sind car1 und car2 Union-Instanzen, während car3 ein Zeiger auf eine Union ist.


Auf Union-Mitglieder zugreifen

Verwenden Sie den Punktoperator (.) für direkten Zugriff und den Pfeiloperator (->) für Zeigerzugriff:


Unions vs. Strukturen

Während Structs genug Platz für alle Mitglieder allokieren, entspricht die Größe einer Union der Größe ihres größten Mitglieds. Betrachten Sie diesen Vergleich:

#include <stdio.h>
union UnionJob {
    char name[32];
    float salary;
    int workerNo;
} uJob;
struct StructJob {
    char name[32];
    float salary;
    int workerNo;
} sJob;
int main() {
    printf("size of union = %zu bytes\n", sizeof(uJob));
    printf("size of structure = %zu bytes", sizeof(sJob));
    return 0;
}

Ausgabe:

size of union = 32
size of structure = 40

Hier belegt das Struct 40 Bytes (32 + 4 + 4), während die Union nur 32 Bytes belegt – die Größe ihres größten Mitglieds, name[32]. Alle Union-Mitglieder teilen sich denselben Speicherbereich.


Praxisbeispiel: Mitglied-Überschreibung

#include <stdio.h>
union Job {
    float salary;
    int workerNo;
} j;
int main() {
    j.salary = 12.3;
    j.workerNo = 100; // überschreibt den vorherigen Wert
    printf("Salary = %.1f\n", j.salary);
    printf("Number of workers = %d", j.workerNo);
    return 0;
}

Ausgabe:

Salary = 0.0
Number of workers = 100

Da salary und workerNo denselben Speicher teilt, löscht das Schreiben in eines das andere.


Um reale Anwendungsfälle zu erkunden, lesen Sie Warum brauchen wir C-Unions?.

C Sprache

  1. Java Enums meistern: Vollständiger Leitfaden zu Enums & Enum-Klassen
  2. Java Enum-Konstruktoren erklärt mit praktischem Beispiel
  3. C-Unions erklärt: Effizientes Speichermanagement für mehrere Datentypen
  4. Pneumatische Ventile richtig dimensionieren: Ein praktischer Leitfaden
  5. KI im Fertigungsmarkt soll bis 2026 4,8 Mrd. $ erreichen, Wachstum von 28,1 % CAGR
  6. Professioneller Leitfaden zum sicheren und präzisen Schneiden von Aluminium-Stabmaterial
  7. Rohrverbinder (Pipe Unions): Definition, Nutzen & Vorteile
  8. Experten-Leitfaden: Gewerbliche Klimaanlage richtig dimensionieren für optimale Leistung
  9. Die richtige Drehmaschinengröße für die Büchsenmacherei: Kaufberatung
  10. Den richtigen Druckluftbehälter dimensionieren: Leistung & Effizienz optimieren