Seltsamer Typecast
-
Ok, habe das falschrum hingeschrieben, es ist natürlich (int gemeint.
Ja, aber der Code wird will in diesem Fall den Integerwert von b nicht als Adresse verwenden. Es ist ein Fehler im Skript nehme ich an, sie übergeben der Funktion ein (int b), mit einem (int * b) sähe das anders aus..
Vielen Dank!
-
Einen Int <--> Zeiger zu casten ist richtig, denn zeiger sind vom typ der systemgröße (und der heißt in C++ int). alles andere sollte nicht gehen, zb (char)(void*)
-
piXelshooter schrieb:
Einen Int <--> Zeiger zu casten ist richtig, denn zeiger sind vom typ der systemgröße (und der heißt in C++ int).
Stimmt nicht. Ich kenne mindestens einen Compiler, bei dem Zeiger 64- und Integer 32-Bit groß sind
-
piXelshooter schrieb:
Einen Int <--> Zeiger zu casten ist richtig, denn zeiger sind vom typ der systemgröße (und der heißt in C++ int). alles andere sollte nicht gehen, zb (char)(void*)
Yo die Aussage ist ziemlicher Quatsch.
C++ erlaubt auch mehrteilige Zeiger, z.B. Segment + Offset, dann kann ein Zeiger schnell mal 6 oder 8 oder 12 Byte gross sein, ganz egal wie gross ein int ist.
DU PFEIFFE
-
hustbaer schrieb:
C++ erlaubt auch mehrteilige Zeiger
Echt? Chapter&Verse?
-
Kann ich dir leider nicht bieten - aber du kannst ja im Gegenzug die Stelle suchen, wo gefordert wird, daß Zeiger und int die selbe Größe haben MÜSSEN.
-
Warum sollte ich, das ist ja offensichtlich falsch.
-
OK, formulieren wir es anders: Es gibt (afaik) keine Passage, in der der C++ Standard mehrteilige Zeiger verbietet oder die Größe eines Zeigers explizit einschränkt. Es ist ja nicht einmal gefordert, daß Zeiger auf unterschiedliche Datentypen die selbe Größe/Struktur haben (wenn das System keinen Direktzugriff auf einzelne Bytes bietet, muß der Compiler bei char* etwas tricksen).
-
@Bashar:
Dir ist hoffentlich klar dass ich von einer mehrteiligen INTERNEN Representation gesprochen habe.
Und das ist ganz offensichtlich richtig.
-
Kann das sein, dass ihr drei gerade ziemlich aneinander vorbeiredet?
-
hustbaer schrieb:
@Bashar:
Dir ist hoffentlich klar dass ich von einer mehrteiligen INTERNEN Representation gesprochen habe.Jetzt ja. Mir kommt die Aussage nur vergleichbar vor mit "C++ erlaubt auch farbige Pointer, z.B. grüne". Solange das intern ist, wen interessiert es.
-
Bashar schrieb:
Jetzt ja. Mir kommt die Aussage nur vergleichbar vor mit "C++ erlaubt auch farbige Pointer, z.B. grüne". Solange das intern ist, wen interessiert es.
Den Anwedner, sobald er sowas brutales wie eine reinterpret_cast auf einen gruenen Pointer loslaesst. Denn ob intern oder nicht, wenn ein gruener Pointer als char-array interpretiert wird kommt was anderes bei raus als wenn mans mit einem roten Pointer (auf das gleiche objekt) macht
-
Ich will nicht mit grünen Pointern arbeiten.
-
n grüner Pointer wär doch mal ne Sache, dann haste sogar intern am Rechner (zumindest auf (Hoch-)Sprachenebene) grüne IT