Das Schlüsselwort typedef in C++ wird zum Aliasing vorhandener Datentypen, benutzerdefinierter Datentypen und Zeiger auf einen aussagekräftigeren Namen verwendet. Mit Typedefs können Sie Standarddatentypen beschreibende Namen geben, was Ihnen auch dabei helfen kann, Ihren Code selbst zu dokumentieren. Meistens werden Typedefs für Aliasing verwendet, nur wenn der vordefinierte Name zu lang oder komplex ist, um ihn immer wieder zu schreiben. Die unnötige Verwendung von typedef ist im Allgemeinen keine gute Vorgehensweise.
Syntax:
NFA-Beispiele
typedef>
Beispiel:
typedef std::vector vInt;>
Unten finden Sie das C++-Programm zur Implementierung von typedef
C++
// C++ Program to implement typedef> #include> > using> namespace> std;> > int> main()> {> > // Now we can make more vectors by using vInt> > typedef> std::vector<> int> >vInt;> > > // vec1 is a vectorof type int> > vInt v;> > > v.push_back(190);> > v.push_back(180);> > v.push_back(10);> > v.push_back(10);> > v.push_back(27);> > > for> (> auto> X : v) {> > cout << X <<> ' '> ;> > }> > > return> 0;> }> |
>
>Ausgabe
190 180 10 10 27>
Anwendungen von typedef in C++
- typedef in C++ kann zum Aliasing vordefinierter Datentypen mit langen Namen verwendet werden.
- Es kann mit STL-Datenstrukturen wie verwendet werden Vektoren, Strings, Karten usw.
- typedef kann auch mit Arrays verwendet werden.
- Wir können typedef mit verwenden normale Zeiger sowie Funktionszeiger .
Verwendung von typedef mit vordefinierten Datentypen
Typedef kann zum Aliasing vordefinierter Datentypen wie verwendet werden int, char, float, und ihre Derivate mögen lang, kurz, signiert, Und ohne Vorzeichen. Der neue Alias kann dann zum Erstellen neuer Variablen des jeweiligen Typs verwendet werden.
Syntax:
typedef>
Beispiel:
C++
// C++ for using typedef with predefined data types> #include> > using> namespace> std;> > int> main()> {> > // ulli can now be used for making more> > // unsigned long long int type variables> > typedef> unsigned> long> long> int> ulli;> > // ulli used to make variables> > ulli a{ 1232133 };> > cout << a;> > return> 0;> }> |
>
>Ausgabe
1232133>
Verwendung von typedef mit STL-Datenstrukturen
typedef kann auch mit verwendet werden STL-Datenstrukturen, wie Vektoren, Strings, Karten usw. Wenn wir zu denen gehören, die nicht das Ganze importieren wollen std-Namespace In unserem Code müssen wir dann immer wieder std::vector, std::string usw. schreiben. Daher kann die Verwendung von typedef in diesem Fall eine schnelle Möglichkeit sein, dies zu verhindern und unseren Code sauber und lesbar zu halten.
Syntax:
typedef>
Beispiel:
C++
// C++ Program to display usage for typedef with vectors> #include> #include> > int> main()> {> > // Now we can make more vectors by using vInt> > typedef> std::vector<> int> >vInt;> > // vec1 is a vectorof type int> > vInt vec1{ 1, 2, 3, 6, 2, 1 };> > > // Outputting the vector> > for> (> int> i = 0; i std::cout << vec1[i] <<' '; } return 0; }> |
>
>Ausgabe
1 2 3 6 2 1>
Verwendung von Typedef mit Arrays
typedef kann mit Arrays verwendet werden, um neuere Arrays zu erstellen (genau wie sie mit STL-Datenstrukturen verwendet werden). Mithilfe von typedef mit Arrays können wir problemlos neue Arrays oder Arrays aus Arrays erstellen und dabei unseren Code nahtlos lesbar halten.
Syntax:
typedef [ ]>
Danach < Aliasname> kann jetzt zum Erstellen von Arrays vom Typ < verwendet werden Datentyp> und Größe .
C++
// C++ program to show use of typedef with arrays> #include> using> namespace> std;> > int> main()> {> > > typedef> int> arr[3];> > > // Making new 1D array> > > arr array1{ 1 , 1, 1};> > > > cout <<> 'Array output: '> > <<> '
'> ;> > for> (> int> i = 0; i <3; i++) {> > cout << array1[i] <<> ' '> ;> > }> > cout <<> '
'> ;> > > // Making new 2D array> > // Matrix is an array of arrays with size> > // ( 3 X 3 )> > arr matrix[3];> > > cout <<> 'Matrix output: '> > <<> '
'> ;> > > for> (> int> i = 0; i <3; i++) {> > for> (> int> j = 0; j <3; j++) {> > // Initializing the matrix> > matrix[i][j] = i * j;> > }> > }> > > // Outputting the matrix> > > for> (> int> i = 0; i <3; i++) {> > for> (> int> j = 0; j <3; j++) {> > cout << matrix[i][j] <<> ' '> ;> > }> > cout <<> '
'> ;> > }> > > return> 0;> }> |
>
>Ausgabe
Array output: 1 1 1 Matrix output: 0 0 0 0 1 2 0 2 4>
Typedef mit Zeigern verwenden
Typedef kann auch mit Zeigern verwendet werden. Zur schnelleren Erstellung von Zeigern und zur besseren Lesbarkeit des Codes. Wir können sie sowohl mit Datenzeigern als auch mit Funktionszeigern verwenden.
( i ) Verwendung mit Datenzeigern:
Nachfolgend finden Sie die Syntax, das Beispiel und den Quellcode für die Verwendung von typedef mit Datenzeigern
Syntax:
typedef *>
Beispiel:
typedef int* iPtr; iPtr pointer1, pointer2;>
Unten finden Sie das Programm zur Verwendung von typedef mit Datenzeigern.
C++
Vereinigte Staaten, wie viele Städte
// C++ Program to showcase the use of typedef> // with data pointer> > #include> using> namespace> std;> > int> main()> {> > int> a = 10;> > int> b = 20;> > // iPtr can now be used to create new pointers of type> > // int> > typedef> int> * iPtr;> > > iPtr pointer_to_a = &a;> > iPtr pointer_to_b = &b;> > > cout <<> 'a is: '> << *pointer_to_a <<> '
'> ;> > cout <<> 'b is: '> << *pointer_to_b <<> '
'> ;> > > return> 0;> }> |
>
>Ausgabe
a is: 10 b is: 20>
(ii) Verwendung mit Funktionszeigern:
Nachfolgend finden Sie die Syntax, das Beispiel und den Code zur Anzeige der Verwendung von typedef mit Funktionszeigern.
Syntax:
typedef < return_type>(*< alias_name>)(< parameter_type>,< parameter_type>, .... );>
Beispiel:
typedef int (*fun_ptr)(int, int); fun_ptr new_ptr = &function;>
Hier können nun mit fun ptr weitere Funktionszeiger erstellt werden. Dies wird im folgenden Code deutlicher.
C++
#include> > // Normal pointer to a function> int> (*func_ptr1)(> int> ,> int> );> > // Using typedef with pointer to a function> typedef> int> (*func_ptr2)(> int> ,> int> );> > // Function to multiply two numbers> int> product(> int> u,> int> v) {> return> u * v; }> > int> main(> void> )> {> > func_ptr1 = &product;> > > // Using typedefed function pointer for creating new> > // function pointer 'new_func'> > func_ptr2 new_func_ptr = &product;> > > // Using normal pointer to a function> > int> x2 = (*func_ptr1)(3, 2);> > > // Using the new function pointer> > int> x1 = (*new_func_ptr)(2, 4);> > > std::cout << x1 << std::endl;> > std::cout << x2 << std::endl;> }> |
>
>Ausgabe
8 6>
Hier ist func_ptr1 ein normaler Funktionszeiger, während func_ptr2 ein Typedef-Funktionszeiger ist und zum Erstellen weiterer Funktionszeiger mit 2 Ganzzahlen als Argumenten und dem Rückgabetyp int verwendet werden kann.
Notiz: func_ptr2 kann nicht mehr als unabhängiger Funktionszeiger verwendet werden und kann nur zum Erstellen neuer Funktionszeiger verwendet werden, die nur auf eine Funktion verweisen können, die int zurückgibt und zwei int-Typen als Parameter verwendet.