Zeiger durch Variable initialisieren
-
Hallo,
ich würde gerne einem Zeiger die Speicheradresse zuteilen, die ich in einer Variablen vom Typ int gespeichert habe.
Also wenn ich folgendes habe:int adresse = 0xFFA10203;Dann würde ich gerne, dass der Zeiger p auf 0xFFA10203 zeigt:
int *p = adresse;Das geht so leider nicht, weil der Compiler meint, dass ich einem int* keinen int Wert zuweisen darf. Ich möchte aber die Adresse auch nicht manuell setzen:
int *p = 0xFFA10203;Sondern eben eher so:
int adresse = 0xFFA10203; int *p = adresse;Ich hoffe es ist klar, was ich gerne möchte: Ich speicher die Adresse irgendwo als Zahl und will die so gespeicherte Adresse meinem Zeiger zuweisen, nur leider weiß ich nicht, wie ich das anstellen soll.
Danke schonmal für eure Hilfe!
-
Das ist nicht sinnvoll, da du nicht bestimmen kannst, wo du eine Variable willst, also welche Adresse sie bekommen soll.
Leg besser eine Variable an und setze den Zeiger auf die Adresse dieser Variablen.
int Var = 352; int* Ptr = &Var;
-
sevobal schrieb:
Hallo,
ich würde gerne einem Zeiger die Speicheradresse zuteilen, die ich in einer Variablen vom Typ int gespeichert habe.Für Adressen gibt es extra Datentypen, die man statt int benutzen kann. Diese Datentypen sind die Zeiger. Wenns sich um einen Zeiger auf einen unbekannten Typ handelt (Oder um eine Adresse ohne wirklich was dahinter) nimm void*.
ABER:
- warum willst du die Adresse nicht manuell setzen? genau das ist es doch was du tist. ob du sie jetzt in der Gegend rumkopierst oder nicht macht keinen Unterschied.
- was willst du mit einer festen Adresse im Programm? Da kann je nach dem Zustand deines Rechners beim Start des Programms alles mögliche liegen. Zugreifen wist du vermutlich eh nicht können, da die meisten Betriebssysteme dir einen Zugriff mit einer segmentation violation oder acess violation quittieren wenn du in Speicher rumwerkelst der dir nicht gehöört.
sevobal schrieb:
Ich hoffe es ist klar, was ich gerne möchte:
Jein. Es ist klar, dass du etwas recht unübliches tun möchtest. Was du damit erreichen möchtest, was also das eigentliche Problem ist, ist garnicht klar.
Siehe hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html letzter Absatz.
-
int *p = reinterpret_cast<int*>(adresse);
aber das willst du garnicht machen.