Inhaltsverzeichnis
1) Typedef-Basisdatentypen verwenden „Aliase“" >1) Typedef-Basisdatentypen verwenden „Aliase“
2) typedef nimmt einen „Alias“ für den benutzerdefinierten Datentyp an" >2) typedef nimmt einen „Alias“ für den benutzerdefinierten Datentyp an
typedef char arr_name[20];arr_name ane; ane[20]="wujunwu"
Nach dem Login kopieren
Nach dem Login kopieren
" >wenn der Datentyp von a char ist, also char a =2, dann
typedef char arr_name[20];arr_name ane; ane[20]="wujunwu"
Nach dem Login kopieren
Nach dem Login kopieren
int a=2;int* pointer;pointer =&a;
Nach dem Login kopieren
Nach dem Login kopieren
Tatsächlich führt das obige Programm zwei Schritte aus: " >Funktionszeiger
int a=2;int* pointer;pointer =&a;
Nach dem Login kopieren
Nach dem Login kopieren
Tatsächlich führt das obige Programm zwei Schritte aus:
In praktischen Anwendungen hat typedef hauptsächlich die folgenden vier Verwendungen: " >typedef Die vier Verwendungen von In praktischen Anwendungen hat typedef hauptsächlich die folgenden vier Verwendungen:
int a=2;typedef int* pointer;pointer p;p=&a;
Nach dem Login kopieren
Nach dem Login kopieren
Tatsächlich führt das obige Programm zwei Schritte aus: " >Funktionszeiger
int a=2;typedef int* pointer;pointer p;p=&a;
Nach dem Login kopieren
Nach dem Login kopieren
Tatsächlich führt das obige Programm zwei Schritte aus:
Traps in typedef" >Traps in typedef
Heim häufiges Problem Was sind die Verwendungszwecke von typedef?

Was sind die Verwendungszwecke von typedef?

Jun 07, 2023 am 10:38 AM
c语言 typedef用法

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.

Was sind die Verwendungszwecke von typedef?

Die Betriebsumgebung dieses Artikels: Windows 10-System, C++ 20-Version, Dell G3-Computer.

In praktischen Anwendungen hat Typedef hauptsächlich die folgenden vier Verwendungszwecke:# 🎜 🎜#

1) Typedef-Basisdatentypen verwenden „Aliase“
Das heißt, alle Datentypen in der C-Sprache können das Schlüsselwort typedef verwenden. Neu definieren der Typname

typedef unsigned int size;typedef unsigned int16 u16;typedef unsigned int8 u8;...
Nach dem Login kopieren
Nach dem Login kopieren
2) typedef nimmt einen „Alias“ für den benutzerdefinierten Datentyp an
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;};
Nach dem Login kopieren
Nach dem Login kopieren

#🎜🎜 #4) typedef nimmt einen „Alias“ für den Zeiger

Gewöhnlicher Zeiger
struct students{
	char sex;
	char name[120];
	int ages;}std;std.name[20]="wujunwu"
Nach dem Login kopieren
Nach dem Login kopieren
ist äquivalent zu:
struct students{
	char sex;
	char name[120];
	int ages;};typedef struct students std;std.name[20]="wujunwu"
Nach dem Login kopieren
Nach dem Login kopieren
wenn der Datentyp von a char ist, also char a =2, dann
typedef char arr_name[20];arr_name ane; ane[20]="wujunwu"
Nach dem Login kopieren
Nach dem Login kopieren
Funktionszeiger
int a=2;int* pointer;pointer =&a;
Nach dem Login kopieren
Nach dem Login kopieren
Tatsächlich führt das obige Programm zwei Schritte aus:
Schritt eins: Geben Sie dem Zeiger einen „Alias“

int a=2;typedef int* pointer;pointer p;p=&a;
Nach dem Login kopieren
Nach dem Login kopieren
#🎜 🎜#Schritt zwei: Erzwungene Typkonvertierung
char a=2;typedef int* pointer;pointer p;p=&(pointer)a;
Nach dem Login kopieren
Nach dem Login kopieren

Schritt drei: Weisen Sie dem Zeiger einen Wert zu#🎜🎜 #

typedef unsigned int bool;typedef bool(*pCopySDMMC2Mem)(int, unsigned int, unsigned short, unsigned int*, bool);typedef void (*pBL2Type)(void);pCopySDMMC2Mem p1=(pCopySDMMC2Mem)0xD0037F98;pBL2Type p2 = (pBL2Type)0x23E00000;
Nach dem Login kopieren
Nach dem Login kopieren
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:

(pCopySDMMC2Mem)0xD0037F98;  //真正在写代码时不能这样写(pBL2Type)0x23E00000;
Nach dem Login kopieren
Nach dem Login kopieren
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:

p1=(pCopySDMMC2Mem)0xD0037F98;p2 = (pBL2Type)0x23E00000;
Nach dem Login kopieren
Nach dem Login kopieren
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. Dies ist nicht mehr möglich 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.“

Der Unterschied zwischen typedef und #define:
#🎜 🎜 #(1) Der von typedef erstellte Symbolname ist auf Typen beschränkt, nicht auf Werte.

(2) typedef wird vom Compiler interpretiert, nicht vom Präprozessor

#🎜🎜 #

typedef Die vier Verwendungen von In praktischen Anwendungen hat typedef hauptsächlich die folgenden vier Verwendungen:

1) Typedef Basic Der Datentyp nimmt „Alias“ an 🎜#2) typedef akzeptiert „Aliase“ für benutzerdefinierte Datentypen Häufig verwendete Methoden zum Neudefinieren von Datennamen für Strukturen sind:
typedef unsigned int size;typedef unsigned int16 u16;typedef unsigned int8 u8;...
Nach dem Login kopieren
Nach dem Login kopieren
Sie können typedef auch verwenden, um Folgendes zu definieren:

struct students{
	char sex;
	char name[120];
	int ages;};
Nach dem Login kopieren
Nach dem Login kopieren
#🎜🎜 #3 ) typedef benötigt einen „Alias“ für das Array
struct students{
	char sex;
	char name[120];
	int ages;}std;std.name[20]="wujunwu"
Nach dem Login kopieren
Nach dem Login kopieren

4) typedef benötigt einen „Alias“ für den Zeiger

#🎜 🎜#Gewöhnlicher Zeiger

struct students{
	char sex;
	char name[120];
	int ages;};typedef struct students std;std.name[20]="wujunwu"
Nach dem Login kopieren
Nach dem Login kopieren
ist äquivalent zu:
typedef char arr_name[20];arr_name ane; ane[20]="wujunwu"
Nach dem Login kopieren
Nach dem Login kopieren
Wenn der Datentyp von a char ist, also char a =2; dann #🎜🎜 #
int a=2;int* pointer;pointer =&a;
Nach dem Login kopieren
Nach dem Login kopieren
Funktionszeiger
int a=2;typedef int* pointer;pointer p;p=&a;
Nach dem Login kopieren
Nach dem Login kopieren
Tatsächlich führt das obige Programm zwei Schritte aus:
Der erste Schritt: Geben Sie dem Zeiger einen „Alias“
char a=2;typedef int* pointer;pointer p;p=&(pointer)a;
Nach dem Login kopieren
Nach dem Login kopieren
Schritt 2: Erzwungene Typkonvertierung
typedef unsigned int bool;typedef bool(*pCopySDMMC2Mem)(int, unsigned int, unsigned short, unsigned int*, bool);typedef void (*pBL2Type)(void);pCopySDMMC2Mem p1=(pCopySDMMC2Mem)0xD0037F98;pBL2Type p2 = (pBL2Type)0x23E00000;
Nach dem Login kopieren
Nach dem Login kopieren
Schritt 3: Weisen Sie dem Zeiger einen Wert zu

pCopySDMMC2Mem p1;pBL2Type p2;
Nach dem Login kopieren
Nach dem Login kopieren
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.

Traps in typedef
Sehen Sie sich als Nächstes ein einfaches Typedef-Verwendungsbeispiel an, wie im folgenden Code gezeigt:

(pCopySDMMC2Mem)0xD0037F98;  //真正在写代码时不能这样写(pBL2Type)0x23E00000;
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:

p1=(pCopySDMMC2Mem)0xD0037F98;p2 = (pBL2Type)0x23E00000;
Nach dem Login kopieren
Nach dem Login kopieren
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:

typedef char* PCHAR;int strcmp(const PCHAR,const PCHAR);
Nach dem Login kopieren
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!

Erklärung dieser 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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwendung der Typedef-Struktur in der C-Sprache Verwendung der Typedef-Struktur in der C-Sprache May 09, 2024 am 10:15 AM

typedef struct wird in der C-Sprache zum Erstellen von Strukturtypaliasen verwendet, um die Verwendung von Strukturen zu vereinfachen. Es weist einem neuen Datentyp ein Alias ​​auf eine vorhandene Struktur zu, indem es den Strukturalias angibt. Zu den Vorteilen gehören verbesserte Lesbarkeit, Wiederverwendung von Code und Typprüfung. Hinweis: Die Struktur muss vor der Verwendung eines Alias ​​definiert werden. Der Alias ​​muss im Programm eindeutig sein und nur innerhalb des Bereichs gültig sein, in dem er deklariert ist.

Der Unterschied zwischen strcpy und strcat in der C-Sprache Der Unterschied zwischen strcpy und strcat in der C-Sprache May 08, 2024 pm 01:03 PM

strcpy kopiert einen String in einen anderen String, während strcat einen String an einen anderen String anhängt. Zu den Hauptunterschieden gehören: unterschiedliche Zwecke, unterschiedliche DST-Parameterverarbeitung und unterschiedliche Sicherheitsaspekte.

Was bedeutet real in der C-Sprache? Was bedeutet real in der C-Sprache? May 09, 2024 pm 12:06 PM

real ist der Datentyp, der zur Darstellung von Gleitkommazahlen mit doppelter Genauigkeit in der Sprache C verwendet wird. Er belegt 8 Bytes, hat eine Genauigkeit von etwa 15 Dezimalstellen und der Bereich beträgt [-1,7976931348623157e+308, 1,7976931348623157e+308].

_komplexe Verwendung in C-Sprache _komplexe Verwendung in C-Sprache May 08, 2024 pm 01:27 PM

Der komplexe Typ wird zur Darstellung komplexer Zahlen in der C-Sprache verwendet, einschließlich Real- und Imaginärteilen. Seine Initialisierungsform ist complex_number = 3.14 + 2.71i, auf den Realteil kann über creal(complex_number) und auf den Imaginärteil über cimag(complex_number) zugegriffen werden. Dieser Typ unterstützt gängige mathematische Operationen wie Addition, Subtraktion, Multiplikation, Division und Modulo. Darüber hinaus wird eine Reihe von Funktionen zum Arbeiten mit komplexen Zahlen bereitgestellt, z. B. cpow, csqrt, cexp und csin.

So implementieren Sie die Power-Funktion in der C-Sprache So implementieren Sie die Power-Funktion in der C-Sprache May 09, 2024 pm 11:33 PM

In der C-Sprache gibt es zwei Möglichkeiten, die Potenzierungsoperation zu implementieren: Verwenden Sie die Funktion pow(), um die Potenz des zweiten Parameters des ersten Parameters zu berechnen. Definieren Sie eine benutzerdefinierte Potenzfunktion, die rekursiv oder iterativ implementiert werden kann: Die rekursive Methode verdoppelt die Potenz weiterhin, bis sie 0 ist. Die iterative Methode verwendet eine Schleife, um die Basis einzeln zu multiplizieren.

Was tun, wenn in scanf in der C-Sprache ein Fehler auftritt? Was tun, wenn in scanf in der C-Sprache ein Fehler auftritt? May 09, 2024 am 11:39 AM

In der C-Sprache umfassen die Methoden zur Behandlung von Scanf-Funktionen: 1. Überprüfen Sie die Eingabe; 3. Überprüfen Sie den Rückgabewert. 5. Verwenden Sie die Fehlerbehandlungsfunktion Benutzerdefinierte Fehler behandeln. Um Fehler zu vermeiden, verwenden Sie die richtigen Datentypen, validieren Sie Eingaben sorgfältig, überprüfen Sie Rückgabewerte und behandeln Sie potenzielle Fehler in Ihrem Programm.

So verwenden Sie „Restrict' in der C-Sprache So verwenden Sie „Restrict' in der C-Sprache May 08, 2024 pm 01:30 PM

Das Schlüsselwort „restrict“ wird verwendet, um den Compiler darüber zu informieren, dass auf eine Variable nur mit einem Zeiger zugegriffen werden kann. Dadurch wird undefiniertes Verhalten verhindert, der Code optimiert und die Lesbarkeit verbessert: Verhindert undefiniertes Verhalten, wenn mehrere Zeiger auf dieselbe Variable zeigen. Um den Code zu optimieren, verwendet der Compiler das Schlüsselwort „restrict“, um den Variablenzugriff zu optimieren. Verbessert die Lesbarkeit des Codes, indem es angibt, dass auf Variablen nur mit einem Zeiger zugegriffen werden kann.

_Was bedeutet bool in der C-Sprache? _Was bedeutet bool in der C-Sprache? May 08, 2024 pm 01:33 PM

_Bool stellt den booleschen Typ in der C-Sprache dar. Es handelt sich um einen einfachen Datentyp, der nur zwei Werte enthält, wahr oder falsch. Er wird verwendet, um die Ergebnisse von Bedingungen oder logischen Ausdrücken darzustellen. Er belegt normalerweise 1 Byte Speicher und kann nur wahr oder falsch speichern falsch. falscher Wert.