Heim > Backend-Entwicklung > C++ > Hauptteil

Haben Zeiger in C immer die gleiche Größe?

Mary-Kate Olsen
Freigeben: 2024-10-28 22:42:02
Original
589 Leute haben es durchsucht

 Do Pointers Always Have the Same Size in C  ?

Haben alle Zeiger in C die gleiche Größe?

Diese Frage war Gegenstand von Debatten, wobei einige Quellen behaupten, dass alle Zeiger haben die gleiche Größe, während andere argumentieren, dass Zeiger in der Größe variieren können.

Gemäß dem C-Standard wird ausdrücklich garantiert, dass:

  • void die gleiche Größe hat wie char
  • cv-qualifizierte Zeiger (z. B. T const, T volatile, T const volatile) haben die gleiche Größe wie T
  • Zeiger auf Enum-Typen mit demselben zugrunde liegenden Typ haben die gleiche Größe

Während der Standard nicht explizit besagt, dass alle Zeiger die gleiche Größe haben, gilt in der Praxis im Allgemeinen, dass Zeiger auf alle Klassentypen , Funktionszeiger, Datenelementzeiger und Funktionselementzeiger haben die gleiche Größe.

Diese Annahme ist jedoch nicht zu 100 % garantiert, da es Compilern technisch erlaubt ist, Streiche zu spielen. Beispielsweise könnten sie längere Zeiger für Klassen erstellen, die mit einem bestimmten Präfix beginnen, oder wenn sie beschließen, Garbage Collection für diese Klassen zu implementieren.

In praktischen Szenarien ist es höchst unwahrscheinlich, dass Compiler diese Freiheit nutzen. Folglich können Entwickler im Allgemeinen davon ausgehen, dass Zeiger auf verschiedene Klassentypen und andere oben genannte Typen die gleiche Größe haben. Um weitere Sicherheit zu bieten, kann eine static_assert-Anweisung implementiert werden, um potenzielle Verstöße zu kennzeichnen.

In segmentierten Architekturen mit Nah- und Fernzeigern ist es jedoch möglich, dass diese Zeigertypen nicht die gleiche Größe haben. Dies stellt eine Ausnahme von der üblichen Regel dar, dass Zeiger einheitliche Größen haben.

Das obige ist der detaillierte Inhalt vonHaben Zeiger in C immer die gleiche Größe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!