www.mikrocontroller.net

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


Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: P. S. (Gast)
Datum:

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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wozu brauchst Du soetwas?

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

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

Autor: Wolfgang Mües (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum konvertierst Du den Pointer in einen Int?

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

Autor: pst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sag doch mal welche Warnung...

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.