Heim  >  Artikel  >  Backend-Entwicklung  >  Was bedeutet typedef in der C-Sprache?

Was bedeutet typedef in der C-Sprache?

hzc
hzcOriginal
2020-07-01 15:32:5722883Durchsuche

typedef ist ein Schlüsselwort in der C-Sprache. Seine Funktion besteht darin, einen neuen Namen für einen Datentyp zu definieren. Die Datentypen umfassen hier interne Datentypen [int, char usw.] und benutzerdefinierte Datentypen [stuct,. usw.] .

Was bedeutet typedef in der C-Sprache?

Typedef ist eine gängige Syntax in C/C++. Die Funktion von typedef kann in vier Typen zusammengefasst werden:

1 Geben Sie Name ein

Wenn Sie in herkömmlichen Anwendungen zwei Zeichenzeiger definieren möchten, schreiben Sie den folgenden Code: char *a, b

(1) char* a,b;

(2)char c='m';

(3)a=&c;

(4)b=&c;

Der obige Code ist falsch, Nur a ist ein Zeichenzeiger und b ist immer noch eine Zeichenvariable. Die Makrodefinition über #define ist immer noch ungültig, da die Makrodefinition nur eine Zeichenersetzung ist.

Folgendes ist möglich:

(1) typedef char* PCHAR; (2) PCHAR pa, pb;

2 Transplantation

Wenn beim Schreiben von Programmen die Plattformportierung berücksichtigt wird, müssen die Unterschiede in der Hardwareschicht vom Code abstrahiert werden, z. B. der von Variablen belegte Platz, der Endmodus usw.

Betrachten Sie eine Gleitkommavariable. Auf verschiedenen Hardwareplattformen kann sie unterschiedlich sein. In diesem Fall können Sie typedef verwenden, um sie in einer separaten Headerdatei zu definieren. Hardwarebezogener Inhalt:

(1) typedef float REAL; (2) typedef short int INT16; (3) typedef int INT32

( 4)...

Wenn Sie in diesem Fall eine zukünftige Portierung des Programms in Betracht ziehen, müssen Sie nur die Header-Datei ändern.

3. Geben Sie Aliasnamen für komplexe Anweisungen

Komplexe Anweisungen haben die Form: void (*b[10]) (void (*)());

Bedeutung : Erstens ist *b[10] ein Zeiger-Array und die zehn Elemente darin sind alle Zeiger. Um welche Art von Zeiger handelt es sich? Es handelt sich um einen Funktionszeiger mit einem Null-Rückgabetyp und Null-Formalparametern.

Eine solch komplexe Deklaration kann mit typedef vereinfacht werden:

Erstens: Deklarieren Sie den Funktionszeiger dahinter:

(1) typedef void (pFunParam *)(); >

Dann deklarieren Sie das vorherige Zeiger-Array:

(1) typedef void (*pFunx)(pFunParam);

Die vereinfachte Version der ursprünglichen Deklaration:

pFunx b[10];

Während des Schreibprozesses dieses Dokuments habe ich auf die Typedef-Verwendung

im Online-Blog verwiesen, in der eine komplexe Aussage erwähnt wurde:

(1) doube (*)() (*e)[9];

Diese Aussage funktioniert jedoch nicht, wenn sie unter gcc kompiliert wird. Gemäß der ursprünglichen Absicht des Autors sollte sie wie folgt deklariert werden:

(1 )double (*(*e)[9])();

e ist ein Zeiger auf ein 9-dimensionales Array. Das Array ist ein Funktionszeiger Der Funktionszeiger ist leer und der Rückgabetyp ist double.

In diesem Fall sollte ein solches Typedef verwendet werden, um die Deklaration zu vereinfachen:

typedef (*(*ptr)[9])();

Empfohlenes Tutorial: "

C-Sprach-Tutorial

Das obige ist der detaillierte Inhalt vonWas bedeutet typedef in der C-Sprache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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