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

Programme in C++. Entwicklerforum
Anonymous
 Haben in C++ alle Zeiger die gleiche Größe?

Post by Anonymous »

Kürzlich bin ich auf die folgende Aussage gestoßen:

Es ist durchaus üblich, dass alle Zeiger die gleiche Größe haben, aber es ist technisch möglich, dass Zeigertypen unterschiedliche Größen haben.

Aber dann bin ich auf diese Aussage gestoßen, die besagt:

Während Zeiger alle gleich sind Größe, da sie nur eine Speicheradresse speichern, müssen wir wissen, auf was für ein Ding sie zeigen.

Nun bin ich mir nicht sicher, welche der obigen Aussagen richtig ist. Die zweite zitierte Aussage scheint aus den C++-Notizen von Computer Science der Florida State University zu stammen.

Aus diesem Grund sollten meiner Meinung nach alle Zeiger die gleiche Größe haben:
1) Angenommen, wir haben:

Code: Select all

int i = 0;
void* ptr = &i;
Angenommen, der C++-Standard erlaubt Zeigern unterschiedliche Größen. Nehmen wir weiter an, dass auf einer beliebigen Maschine/einem beliebigen Compiler (da dies vom Standard erlaubt ist) ein void* eine Größe von 2 Bytes hat, während ein int* eine Größe von 4 Bytes hat.
Nun, ich denke, es gibt hier ein Problem, nämlich dass auf der rechten Seite ein int* mit einer Größe von 4 Bytes ist, während wir auf der linken Seite ein void* haben, das eine Größe von 2 Bytes hat. Wenn also die implizite Konvertierung von int* nach void* erfolgt, kommt es zu einem gewissen Informationsverlust.
2) Alle Zeiger enthalten Adressen. Da für eine bestimmte Maschine alle Adressen die gleiche Größe haben, ist es ganz natürlich (logisch), dass auch alle Zeiger die gleiche Größe haben sollten.
Daher denke ich, dass das zweite Zitat wahr ist.

Meine erste Frage ist, was der C++-Standard dazu sagt?
Meine zweite Frage ist, ob der C++-Standard Zeiger unterschiedlicher Größe zulässt. Gibt es dann einen Grund dafür? Ich meine, es erscheint mir etwas unnatürlich, zuzulassen, dass Zeiger unterschiedliche Größen haben (in Anbetracht der beiden Punkte, die ich oben erklärt habe). Ich bin mir also ziemlich sicher, dass das Standardkomitee bereits darüber nachgedacht hat (dass Zeiger unterschiedliche Größen haben können) und bereits einen Grund dafür hat, Zeiger unterschiedliche Größen zuzulassen. Beachten Sie, dass ich diese (zweite Frage) nur stelle, wenn der Standard Zeiger unterschiedlicher Größe zulässt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post