Die Verwendung von Typedef ist: 1. Typedef-Basisdatentypen verwenden „Aliase“. Alle Datentypen in der C-Sprache können Typedef verwenden, um den Typnamen neu zu definieren. 2. Typedef verwendet „Aliase“ für benutzerdefinierte Daten Typen. ", die benutzerdefinierten Datentypen umfassen: Struktur Strukturname { };, Union Unit Name { };, Enumeration Enum { }; 3. Typedef verwendet „Alias“ für Array; 4. Typedef verwendet „Alias“ für Zeiger.
Die Betriebsumgebung dieses Artikels: Windows 10-System, C++ 20-Version, Dell G3-Computer.
In praktischen Anwendungen hat Typedef hauptsächlich die folgenden vier Verwendungszwecke:# #
Zu den benutzerdefinierten Datentypen gehören: Struktur Name der Körperstruktur { };, Union Body Unit Name { };, Enumeration Enum { }; #Sie können typedef auch verwenden, um Folgendes zu definieren: " für das Array
struct students{ char sex; char name[120]; int ages;};
Zusammenfassung: Bei Verwendung von typedef erstellt typedef keinen neuen Typ, sondern stellt lediglich einen „Alias“ für einen vorhandenen Typ zur Verwendung im Programm bereit.
Traps in typedef
Sehen Sie sich als Nächstes ein einfaches Beispiel für die Verwendung von typedef an, wie im folgenden Code gezeigt:
pCopySDMMC2Mem p1;pBL2Type p2;
Nach dem Login kopieren
Nach dem Login kopieren
# #Entspricht „const PCHAR“ im obigen Code „const char*“?
Die Antwort ist nein. Der Grund ist einfach. Typedef wird zum Definieren eines neuen Alias eines Typs verwendet. Es unterscheidet sich von einem Makro und ist kein einfacher String-Ersatz. Daher verleiht die Konstante in „const PCHAR“ dem gesamten Zeiger selbst Konstanz, was den Konstantenzeiger „char* const (ein konstanter Zeiger, der auf char zeigt)“ bildet. Das heißt, es entspricht tatsächlich „char* const“ und nicht „const char* (Zeiger auf Konstante char)“. Natürlich ist es auch einfach, const PCHAR äquivalent zu const char* zu machen, wie im folgenden Code gezeigt:
Tatsächlich sollte jedes Mal, wenn Sie eine Typedef für einen Zeiger deklarieren, diese im sein final Typedef fügt dem Namen eine Konstante hinzu, sodass der Zeiger selbst konstant ist.
Es sollte auch beachtet werden, dass typedef zwar keinen wirklichen Einfluss auf die Speichereigenschaften des Objekts hat, aber dennoch ein Schlüsselwort der Speicherklasse in der Syntax ist, genau wie auto, extern, static und register das gleiche. Daher ist die folgende Deklarationsmethode nicht möglich:
Zusammenfassung: Bei Verwendung von typedef ist dies bei typedef der Fall Es wird kein neuer Typ erstellt, sondern nur ein neuer Typ für einen bestimmten Typ. Stellt einen „Alias“ für einen vorhandenen Typ zur Verwendung in einem Programm bereit.
# #Entspricht „const PCHAR“ im obigen Code „const char*“?
Die Antwort ist nein. Der Grund ist einfach. Typedef wird zum Definieren eines neuen Alias eines Typs verwendet. Es unterscheidet sich von einem Makro und ist kein einfacher String-Ersatz. Daher verleiht die Konstante in „const PCHAR“ dem gesamten Zeiger selbst Konstanz, was den Konstantenzeiger „char* const (ein konstanter Zeiger, der auf char zeigt)“ bildet. Das heißt, es entspricht tatsächlich „char* const“ und nicht „const char* (Zeiger auf Konstante char)“. Natürlich ist es auch einfach, const PCHAR äquivalent zu const char* zu machen, wie im folgenden Code gezeigt:
Tatsächlich sollte jedes Mal, wenn Sie eine Typedef für einen Zeiger deklarieren, diese im sein final Typedef fügt dem Namen eine Konstante hinzu, sodass der Zeiger selbst konstant ist.
Es sollte auch beachtet werden, dass typedef zwar keinen wirklichen Einfluss auf die Speichereigenschaften des Objekts hat, aber dennoch ein Schlüsselwort der Speicherklasse in der Syntax ist, genau wie auto, extern, static und register das gleiche. Daher ist die folgende Deklarationsmethode nicht möglich:
Der Grund dafür ist, dass mehrere Schlüsselwörter der Speicherklasse nicht deklariert werden können, da typedef bereits die Position des Schlüsselworts der Speicherklasse belegt hat. Sie können dies nicht mehr tun Verwenden Sie in einer Typedef-Deklaration das Schlüsselwort static oder ein anderes Speicherklassenschlüsselwort. Natürlich meldet der Compiler auch einen Fehler. Die Fehlermeldung in VC++2010 lautet beispielsweise „Es können nicht mehrere Speicherklassen angegeben werden.“
Das obige ist der detaillierte Inhalt vonWas sind die Verwendungszwecke von typedef?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn