Nein. Ein Zeiger kann größer oder kleiner als eine ganze Zahl sein. Wenn Sie einen Zeiger aus irgendeinem Grund als Ganzzahl übergeben müssen (z. B. Ganzzahl statt Zeiger, Arithmetik), passen sie garantiert in ein intptr_t .
Sie passen nicht garantiert in eine size_t, wie in einer anderen Antwort vorgeschlagen, aber in der Praxis ist es unwahrscheinlich, dass dies nicht der Fall ist, da die größte adressierbare Größe normalerweise der größten adressierbaren Adresse entspricht.
Ich denke, Sie meinen die Größe der Datentypen, wie sie von der Plattform definiert werden, nicht C lang. Soweit ich weiß, definiert C keine bestimmte Größe für die Datentypen. Die Antwort auf Ihre Frage ist, dass Sie dies nicht annehmen können, zum Beispiel auf win32 sizeof (int) == sizeof (Zeiger) == 4 Bytes jedoch auf win64 sizeof (int) == 4 und sizeof (Zeiger) == 8
nein, aber ein Zeiger sollte die gleiche Größe wie ein intptr_t haben.
Nein; auf meinem MacOS X 10.6.5. Maschine, ein int
ist 32 Bits und ein Zeiger ist standardmäßig 64 Bits.
Wenn Sie eine Ganzzahl mit der richtigen Größe für einen Zeiger benötigen, verwenden Sie #include <inttypes.h>
(oder <stdint.h>
) und uintptr_t
- vorausgesetzt, Sie haben C99-Unterstützung oder können sie simulieren.
Tags und Links c pointers language-design