Heim >Backend-Entwicklung >C++ >Haben Zeiger in C immer die gleiche Größe?
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:
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!