Zeiger-Artikel im Wiki

Gast #364993
Lesenswert?
• ▲
▼
Hallo,
gucke gerade im Wiki den Artikel für Zeiger durch, und da steht
folgendes:

int *ptr = (int *) 0x1100;

/* (int *) konvertiert dabei die Integerzahl 0x1100 in eine Adresse.*/

Mir ist nicht klar warum dieser Cast verwendet wird.
Die Deklaration und Definition geschieht hier ja in einer Zeile. An
welche Speicherstelle würde der Pointer denn Zeigen, bzw. wohin würde
dann die 0x1100 geschrieben wenn man den Cast wegließe?
Gast #364994
Lesenswert?
• ▲
▼
--> An welche Speicherstelle würde der Pointer denn Zeigen, bzw.
--> wohin würde dann die 0x1100 geschrieben wenn man den Cast
--> wegließe?

Der Compiler würde ohne den Cast (int *) vermutlich "nur" eine
Warnung ausgeben.

Ausserdem handelt es sich bei der 0x1100 nicht um einen Wert, der in
einer durch *ptr dereferenzierte Speicherstelle abgelegt wird, sondern
"(int *) 0x1100" ist die Adresse, welche in *ptr abgelegt wird.

Hiermit wird also dem POINTER "ptr" die ADRESSE 0x1100 zugewiesen.

Gruß,
Magnetus
Gast #364995
Lesenswert?
• ▲
▼
Der gcc initialisiert ja Variablen standarmäßig mit 0.
Also bei

int i;

besitzt i den Wert 0, auch wenn ich es nicht extra angebe (aber
sollte).
Demnach würde ich bei weglassen des Casts die 0x1100 an die
Speicherstelle 0 schreiben. Richtig?
Persönliche Seite #364996
Lesenswert?
• ▲
▼
Hi

Nein. Wenn du den cast wegläßt wandelst du bei der Initialisierung der
Variablen einen Integerwert in eine Adresse. Da das etwas ist was nicht
absolut üblich ist (da evtl. sizof(int) != sizof(* int)) wirft der
Compiler eine Warnung. Mit dem Cast signalisierst du dem Compiler
sozusagen: "Ich weiß was ich da tue. Du brauchst mich nicht zu
warnen".

Matthias

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.