Heim >Backend-Entwicklung >C++ >Haben Zeiger in C unabhängig vom Datentyp, auf den sie zeigen, eine feste Größe?

Haben Zeiger in C unabhängig vom Datentyp, auf den sie zeigen, eine feste Größe?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-13 18:02:10348Durchsuche

Do Pointers in C   Have a Fixed Size Regardless of the Data Type They Point To?

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:

  • sizeof(x): Gibt die Größe der Variablen x aus, die 4 ist für eine ausführbare 32-Bit-Datei (vorausgesetzt, int ist 4 Bytes).
  • sizeof(xPtr): Gibt die Größe der Zeigervariablen xPtr aus, die normalerweise, wie zuvor erwähnt, fest bleibt, unabhängig vom Typ, auf den sie zeigt.
  • sizeof(y): Gibt die Größe der Zeichenvariablen y aus, die normalerweise 1 Byte für ein einzelnes Zeichen beträgt Zeichen.
  • sizeof(yPtr): Ähnlich wie xPtr gibt es die Größe der Zeigervariablen yPtr aus, die mit xPtr identisch ist.

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!

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