C Gewerkschaften
C-Gewerkschaften
In diesem Tutorial lernen Sie Unions in der C-Programmierung kennen. Genauer gesagt, wie man Gewerkschaften gründet, auf ihre Mitglieder zugreift und die Unterschiede zwischen Gewerkschaften und Strukturen lernt.
Eine Vereinigung ist ein benutzerdefinierter Typ, der Strukturen in C ähnlich ist, mit Ausnahme eines wesentlichen Unterschieds.
Strukturen weisen genügend Speicherplatz zu, um alle ihre Mitglieder zu speichern, wohingegen Unions nur jeweils einen Mitgliedswert enthalten können .
Wie definiere ich eine Union?
Wir verwenden den union
Schlüsselwort zum Definieren von Gewerkschaften. Hier ist ein Beispiel:
union car
{
char name[50];
int price;
};
Der obige Code definiert einen abgeleiteten Typ union car
.
Union-Variablen erstellen
Wenn eine Union definiert wird, erstellt sie einen benutzerdefinierten Typ. Es wird jedoch kein Speicher zugewiesen. Um Speicher für einen bestimmten Union-Typ zuzuweisen und damit zu arbeiten, müssen wir Variablen erstellen.
So erstellen wir Union-Variablen.
union car
{
char name[50];
int price;
};
int main()
{
union car car1, car2, *car3;
return 0;
}
Eine andere Möglichkeit, Union-Variablen zu erstellen, ist:
union car
{
char name[50];
int price;
} car1, car2, *car3;
In beiden Fällen Union-Variablen car1 , auto2 , und einen Vereinigungszeiger car3 von union car
Typ erstellt.
Zugriff auf Mitglieder einer Gewerkschaft
Wir verwenden den .
Operator für den Zugriff auf Mitglieder einer Gewerkschaft. Und um auf Pointer-Variablen zuzugreifen, verwenden wir den ->
Betreiber.
Im obigen Beispiel
- Zugriff auf Preis für
car1
,car1.price
verwendet wird. - Zugriff auf Preis mit
car3
, entweder(*car3).price
odercar3->price
verwendet werden.
Unterschied zwischen Unions und Strukturen
Nehmen wir ein Beispiel, um den Unterschied zwischen Unions und Strukturen zu demonstrieren:
#include <stdio.h>
union unionJob
{
//defining a union
char name[32];
float salary;
int workerNo;
} uJob;
struct structJob
{
char name[32];
float salary;
int workerNo;
} sJob;
int main()
{
printf("size of union = %d bytes", sizeof(uJob));
printf("\nsize of structure = %d bytes", sizeof(sJob));
return 0;
}
Ausgabe
size of union = 32 size of structure = 40
Warum dieser Unterschied in der Größe von Union- und Strukturvariablen?
Hier die Größe von sJob ist 40 Bytes, weil
- die Größe von
name[32]
ist 32 Byte - die Größe von
salary
ist 4 Bytes - die Größe von
workerNo
ist 4 Bytes
Allerdings ist die Größe von uJob ist 32 Bytes. Das liegt daran, dass die Größe einer Union-Variablen immer die Größe ihres größten Elements ist. Im obigen Beispiel ist die Größe des größten Elements (name[32]
), ist 32 Byte groß.
Bei einer Gewerkschaft teilen alle Mitglieder dasselbe Gedächtnis .
Beispiel:Zugriff auf Gewerkschaftsmitglieder
#include <stdio.h>
union Job {
float salary;
int workerNo;
} j;
int main() {
j.salary = 12.3;
// when j.workerNo is assigned a value,
// j.salary will no longer hold 12.3
j.workerNo = 100;
printf("Salary = %.1f\n", j.salary);
printf("Number of workers = %d", j.workerNo);
return 0;
}
Ausgabe
Salary = 0.0 Number of workers = 100
Um zu erfahren, wo Unions verwendet werden, besuchen Sie Warum brauchen wir C-Unions?
C Sprache
- Java-Enumerationen
- Java-Enum-Konstruktor
- C - Gewerkschaften
- So dimensionieren Sie ein Pneumatikventil
- Marktgröße für KI im verarbeitenden Gewerbe soll bis 2026 4798 Millionen US-Dollar erreichen
- Zuschneiden von Aluminium-Stangenmaterial
- Was ist eine Rohrverbindung?
- Größenbestimmung einer gewerblichen Klimaanlage
- Welche Drehbankgröße benötige ich zum Büchsenmacher?
- Größe ist wichtig für Druckluftbehälter