Forum: PC-Programmierung C++ Zeiger in Int umwandeln


von Klaus (Gast)


Lesenswert?

Hallo!


Gibt es eigentlich ein Möglichkeit, einen Zeiger in einen int 
umzuwandeln, die keine Warning beim Kompilieren erzeugt?

Ich habs zur Zeit so gemacht:

long int x = (long int) Zeiger;


Normalerweise casted man natürlich nicht zwischen Pointer und Int. Das 
soll auch nur als Debugausgabe benutzt werden.

von P. S. (Gast)


Lesenswert?

Genau so. Wenn du Lust dazu hast, kannst du auch einen reinterpret_cast 
nehmen, aber das ist das Gleiche in gruen...

von Klaus (Gast)


Lesenswert?

Leider produziert die angegebene Zeile eine Warnung. Und da das ganze 
ein open source Projekt ist, kommen regelmäßig Kommantare und Nachfragen 
wegen der Warnung rein.

Mit nem  reinterpret_cast<long int>(Zeiger)  wir auch eine Warnung 
produziert.


Gibts da kein Weg, das der Compiler da nicht meckert?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und wozu brauchst Du soetwas?

Ein Trick wäre übrigens die Ausnutzung von Pointerarithmetik:

  long int x = (void *) Zeiger - (void *) 0;

von Wolfgang Mües (Gast)


Lesenswert?

Warum konvertierst Du den Pointer in einen Int?

Mit gnu printf kann man auch Pointerwerte ausgeben, mit dem 
Formatkennzeichen "p".

von pst (Gast)


Lesenswert?

Sag doch mal welche Warnung...

von Sven P. (Gast)


Lesenswert?

Gehen tut das schon, siehste ja.

Aber steig vorher lieber nochmal in die Theorie ein:
Nirgendwo steht geschrieben, dass ein Zeiger unbedingt eine Zahl sein 
muss. Es obliegt einzig und allein der Rechnerarchitektur, wie Zeiger 
umgesetzt werden und wie dann der *-Typ in C unter der Haube aussieht!

Ein Beispiel wäre z.B. einen Zeiger mit zwei Zahlen darzustellen 
(Segment:Offset).

Also Vorsicht... warum sollte man einen Zeiger überhaupt in eine Zahl 
umwandeln?

von Peter (Gast)


Lesenswert?

Schon mal überlegt das die Warnung nicht umsonst ist?

Ich glaube bei Windows mit 64bit ist int 32bit und ein Zeiger ist 64bit 
- das geht dann eh nicht mehr.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.