Heim Backend-Entwicklung C++ Haben Zeiger in C immer die gleiche Größe?

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

Oct 28, 2024 pm 10:42 PM

 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!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Mar 03, 2025 pm 05:52 PM

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

GULC: C -Bibliothek von Grund auf neu gebaut GULC: C -Bibliothek von Grund auf neu gebaut Mar 03, 2025 pm 05:46 PM

GULC: C -Bibliothek von Grund auf neu gebaut

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte Mar 03, 2025 pm 05:53 PM

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Mar 03, 2025 pm 05:53 PM

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

eindeutiger Gebrauch und Phrasenfreigabe eindeutiger Gebrauch und Phrasenfreigabe Mar 03, 2025 pm 05:51 PM

eindeutiger Gebrauch und Phrasenfreigabe

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Mar 03, 2025 pm 05:51 PM

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Mar 12, 2025 pm 04:50 PM

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Mar 12, 2025 pm 04:52 PM

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?

See all articles