Heim >Backend-Entwicklung >C++ >Haben Zeiger in C unabhängig vom Datentyp, auf den sie zeigen, eine feste Größe?
Zeigergröße in C verstehen
Es stellt sich die Frage: „Hängt die Größe eines Zeigers von der Größe des Typs ab, auf den er zeigt?“ , oder behalten Zeiger immer eine feste Größe bei? Lassen Sie uns in dieses Konzept eintauchen und dabei auf der Grundlage der doppelten Frage aufbauen.
In C haben Zeiger im Allgemeinen eine feste Größe. In ausführbaren 32-Bit-Dateien belegen sie üblicherweise 32 Bit. Es gibt jedoch Ausnahmen, beispielsweise in älteren Windows-Versionen, wo zwischen 16-Bit- und 32-Bit-Zeigern unterschieden werden musste.
Beachten Sie den folgenden Codeausschnitt:
int x = 10; int *xPtr = &x; char y = 'a'; char *yPtr = &y; std::cout << sizeof(x) << "\n"; std::cout << sizeof(xPtr) << "\n"; std::cout << sizeof(y) << "\n"; std::cout << sizeof(yPtr) << "\n";
Hier Szenario würde die Ausgabe wie folgt aussehen:
Es ist wichtig zu beachten, dass while-Zeiger normalerweise eine einheitliche Größe haben, ist es unklug, sich in Ihrem Code auf diese Annahme zu verlassen. Wenn Ihr Programm darauf angewiesen ist, dass Zeiger eine bestimmte Größe haben, überprüfen Sie dies immer explizit.
Funktionszeiger sind eine bemerkenswerte Ausnahme. Ihre Größe kann je nach Aufrufkonvention des jeweiligen Systems oder Compilers variieren. Weitere Informationen zu Funktionszeigern finden Sie in der Antwort von „Jens“.
Das obige ist der detaillierte Inhalt vonHaben Zeiger in C unabhängig vom Datentyp, auf den sie zeigen, eine feste Größe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!