Haben alle Zeiger in C die gleiche Größe?
Es stellt sich die Frage, ob alle Zeiger in C eine einheitliche Größe haben. Obwohl es oft angenommen wird, liefert der C-Standard definitive Einblicke in diese Angelegenheit.
C-Standardspezifikationen
Der C-Standard garantiert ausdrücklich:
Praktische Überlegungen
In der Praxis behalten Zeiger auf Klassentypen im Allgemeinen identische Größen bei. Dies liegt an der Anforderung, dass der Compiler die Größe von T* bestimmen muss, ohne T vollständig zu definieren. Während Compiler eine gewisse Flexibilität bei der Zeigergröße haben, wird diese in realen Szenarien selten ausgeübt.
Zusätzlich Funktionszeiger , Zeiger auf Datenelemente und Zeiger auf Funktionselemente haben normalerweise die gleiche Größe. Dies ermöglicht eine nahtlose Neuinterpretation zwischen diesen Zeigertypen.
Ausnahmen
Eine bemerkenswerte Ausnahme tritt in segmentierten Architekturen auf, bei denen Nah- und Fernzeiger unterschiedlich groß sein können. Dieser Fall widerspricht den üblichen Regeln für die Einheitlichkeit der Zeigergröße.
Schlussfolgerung
Der C-Standard stellt klar, dass void*- und cv-qualifizierte Zeiger eine einheitliche Größe haben. Während Zeiger auf verschiedene Typen im Allgemeinen die gleiche Größe erben, legen praktische Überlegungen nahe, dass Zeiger auf Klassentypen, Funktionszeiger und Zeiger auf Datenelemente alle eine einheitliche Größe haben. Eine Ausnahme stellen jedoch segmentierte Architekturen dar, bei denen Nah- und Fernzeiger möglicherweise unterschiedliche Größen haben.
Das obige ist der detaillierte Inhalt vonSind in C alle Zeiger gleich groß?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!