typedef für Typ-Aliase verwenden
Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 58 von 63.
Manchmal werden Sie in der C-Programmierung auf Situationen stoßen, in denen bestehende Datentypnamen entweder zu wortreich sind oder die Absicht Ihres Programms nicht klar ausdrücken. Das Schlüsselwort typedef bietet eine Lösung, indem es Ihnen ermöglicht, neue Namen für bestehende Datentypen zu erstellen.
Betrachten Sie typedef als das Erstellen eines Alias oder Spitznamens für einen Datentyp. Die grundlegende Syntax ist unkompliziert:
typedef existing_type new_name;Zum Beispiel können Sie einen aussagekräftigeren Namen für den Datentyp int erstellen:
typedef int Integer;Nach dieser Deklaration können Sie Integer überall dort verwenden, wo Sie normalerweise int verwenden würden. Sowohl int count = 5; als auch Integer count = 5; bewirken genau dasselbe, aber die zweite Version könnte in bestimmten Kontexten aussagekräftiger sein.
Diese Funktion wird besonders wertvoll, wenn Sie mit komplexen Datentypen arbeiten oder wenn Sie Ihren Code selbstdokumentierender und wartungsfreundlicher gestalten möchten.
Aufgabe
EinfachErstelle ein C-Programm, das die Verwendung von typedef demonstriert, um aussagekräftige Typ-Aliase für ein Temperaturüberwachungssystem zu erstellen. Dein Programm sollte:
- Die folgenden Typ-Aliase mithilfe von
typedeferstellen:- Einen Typ-Alias
Temperaturefürfloaterstellen - Einen Typ-Alias
SensorIDfürinterstellen - Einen Typ-Alias
Statusfürinterstellen
- Einen Typ-Alias
- In der Hauptfunktion:
- Eine Variable vom Typ
SensorIDmit dem Namensensordeklarieren - Eine Variable vom Typ
Temperaturemit dem NamencurrentTempdeklarieren - Eine Variable vom Typ
Temperaturemit dem Namenthresholddeklarieren - Eine Variable vom Typ
Statusmit dem NamenalertStatusdeklarieren - Vier Werte in dieser Reihenfolge aus der Eingabe lesen: Sensor-ID, aktuelle Temperatur, Schwellentemperatur und Alarmstatus
- Diese Eingabewerte den entsprechenden Variablen zuweisen
- Die Sensorinformationen in genau diesem Format ausgeben:
Sensor ID: [sensor_id]Current Temperature: [current_temp]Threshold: [threshold_temp]Alert Status: [alert_status]
- Eine Temperaturanalyse durchführen und die Ergebnisse ausgeben:
- Die Temperaturdifferenz (aktuelle Temperatur minus Schwellenwert) berechnen und in einer
Temperature-Variable mit dem Namendifferencespeichern - Die Differenz in genau diesem Format ausgeben:
Temperature Difference: [difference] - Die Temperaturkategorie anhand der aktuellen Temperatur bestimmen:
- Wenn die Temperatur unter 0.0 liegt:
Category: Freezingausgeben - Wenn die Temperatur zwischen 0.0 und 25.0 (einschließlich) liegt:
Category: Normalausgeben - Wenn die Temperatur über 25.0 liegt:
Category: Hotausgeben
- Wenn die Temperatur unter 0.0 liegt:
- Prüfen, ob ein Alarm ausgelöst werden soll:
- Wenn die aktuelle Temperatur größer als der Schwellenwert ist UND der Alarmstatus 1 ist:
Alert: Temperature exceeded threshold!ausgeben - Andernfalls:
Alert: No alert triggeredausgeben
- Wenn die aktuelle Temperatur größer als der Schwellenwert ist UND der Alarmstatus 1 ist:
- Die Temperaturdifferenz (aktuelle Temperatur minus Schwellenwert) berechnen und in einer
- Eine Variable vom Typ
Diese Herausforderung zeigt, wie typedef den Code selbstdokumentierender und leichter verständlich macht. Anstatt im gesamten Programm generische Typen wie int und float zu verwenden, nutzt du aussagekräftige Namen wie SensorID, Temperature und Status, die den Zweck jeder Variable eindeutig angeben. Dieser Ansatz verbessert die Lesbarkeit des Codes und erleichtert die Wartung und Änderung deiner Programme.
Probier es selbst
#include <stdio.h>
// TODO: Erstellen Sie hier typedef-Aliase
int main() {
// TODO: Variablen unter Verwendung der typedef-Aliase deklarieren
// Eingabewerte lesen
scanf("%d", &sensor);
scanf("%f", ¤tTemp);
scanf("%f", &threshold);
scanf("%d", &alertStatus);
// TODO: Schreiben Sie Ihren Code unten, um Sensorinformationen auszugeben und Analysen durchzuführen
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Zeiger-Grundlagen
Was ist ein Zeiger?Zeiger deklarierenDer Adressoperator (&)Der Dereferenzierungsoperator (*)NULL-ZeigerZusammenfassung: Zeiger-Grundlagen4Projekt: Einfaches Text-Tool
ProjektübersichtZeichen zählen7Strukturen (structs)
Was ist ein Struct?Deklarieren eines StructsErstellen von Struct-VariablenZugriff auf Struct-MemberInitialisieren von StructsZusammenfassung: Studentendaten-Struct10Enums und typedef
enum für benannte KonstantenEnums deklarieren und verwendenEnums in Switch-Anweisungentypedef für Typ-Aliase verwendentypedef mit StructsWiederholung: Übung zu typedef & Enums2Pointer und Arrays
Array-Namen als PointerArray-Elemente - PointerPointer-ArithmetikPointer vergleichenWiederholung: Array-Durchlauf mit Pointern5Zeiger und Funktionen
Wertübergabe (Pass-by-Value)Zeiger an Funktionen übergebenVariablen über Zeiger ändernEin klassisches Beispiel: SwapArrays an Funktionen übergebenZusammenfassung: Zeiger als Funktionsargumente8Structs und Zeiger
Zeiger auf StructsDer Pfeiloperator (->)Structs per Wert übergebenÜbergabe von Struct-ZeigernDynamische Allokation von StructsZusammenfassung: Struct ändern - Ptr11Finale Wiederholungsaufgaben
Wiederholung: Dynamische String-KonkatenationWiederholung: Array von StructsWiederholung: Wortfrequenz-Zähler3Character-Arrays und Strings
Strings als char-ArraysDer Null-TerminatorString-Eingabe mit scanfVerwendung von strlen()Verwendung von strcpy()Verwendung von strcat()Verwendung von strcmp()Zusammenfassung: Grundlegende String-FunktionenÜbe selbstständig: Online-C-Compiler