Konsole Pointer Adresse
-
Hallo,
ich lerne seit kurzem C++ und bin neu hier im Board.
Ich habe eine PDF aus welcher ich mir alles erlern und heute waren die Pointer dran, hab das Kapitel jetzt fertig, und hab mir jetzt zwei Programme geschrieben, eines erstellt ne Variable int Var1 und gibt die Adresse der Variable mit nem Pointer aus.
Jetzt kommt das zweite Programm zum Einsatz, da in meiner PDF stand, dass bei der Inizialisierung eines Pointers immer die Adresse angegeben werden muss will ich den jetzt auf die Variable in meinem ersten Script setzten, weil da steht dies kann über direkte Zuweißung der Adresse sein.
Drum hab ich in meinem zweiten Programm die Adresse vom ersten eingefügt, aber der Compiler bringt ein Fehlererror C2059: Syntaxfehler: 'Ungültiges Suffix für Zahl'
error C2041: Ungültige Ziffer '9' für Basis '8'
error C2440: '=': 'int' kann nicht in 'int *' konvertiert werden
error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'FC08'
error C2065: 'FC08': nichtdeklarierter BezeichnerIch denke scon dass wenn man die Adresse vom RAM hat, dass man dann auf die Variable zugreifen kann, aber wie?
Bitte um Hilfestellung
PSPfreak20072
-
mach mal dein programm so kurz wie möglich und kopier das mal hier rein, dann kann man besser sehen was los ist.
-
PSPfreak20072 schrieb:
error C2059: Syntaxfehler: 'Ungültiges Suffix für Zahl'
es steht ein ungültiges zeichen unmittelbar hinter einer zahl. ich tippe auf ein F.
error C2041: Ungültige Ziffer '9' für Basis '8'
du hasst eine zahl im oktal-system angegeben. die ziffer 9 kommt im oktal-system nicht vor.
error C2440: '=': 'int' kann nicht in 'int *' konvertiert werden
du musst die adresse in einen passenden pointer casten.
error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'FC08'
error C2065: 'FC08': nichtdeklarierter BezeichnerF und C sind keine gültigen dezimal- oder oktalziffern. hexadezimalzahlen werden mit 0x eingeleitet.
wahrscheinlich steht in deinem code sowas:
int *ptr = 0FC08; // oder so ähnlich
du willst:
int *ptr = reinterpret_cast<int*>(0x0fc08);
-
Ja genau alles erfasst, aber in meinem Tutoril haben die das so geschreben:
int Var1=55;
int *pVar1 = &Var1;cout << pVar1;
und dann haben die wie du es beschrieben hast etwas mit 0x... bekommen, ich hab das mit dem F und C und so aber darunter stand dass die Ergebnise abweichen können (is ja klar!) aber wie bekomm ich die andere Ausgabe, weil das war schon 50 Seiten her, aber die sind da nicht weiter daruaf eingegangen, darum wollt ich ja jetzt dar Programm schreiben.
THX schommal
EDIT: Hab ma ein Programm welches die 0x.. Werte im Tut ausgibt per Drag and Drop genommen, und es bei mir laufen lassen, bei denen kommen die 0x.. Werte raus und bei mir wieder einer mit F und C, also verstanden hab ich das TUT und die Pointer, aber es wird bei mir nicht das ausgegeben wie beim TUT, hab gedacht das hilft hier Weiter;)
-
argurmarodador schrieb:
mach mal dein programm so kurz wie möglich und kopier das mal hier rein, dann kann man besser sehen was los ist.
int Var1=13; int * pVar1=&Var1; cout << "*pVar1:\t" << *pVar1 << "\n"; cout << "pVar1:\t" << pVar1 << "\n\n\n";
So ist es bei mir und genau so auch im TUT vom Buch, aber warum bekomm ich da so ne Oktal Zahl, und keine Hexadezimal?? weil auf meinem anderen Computer gibts auch ne Oktal aus!
Bitte dringenst um Hilfe, weil ich weiterlernen will.
PSPfreak20072
-
PSPfreak20072 schrieb:
So ist es bei mir und genau so auch im TUT vom Buch, aber warum bekomm ich da so ne Oktal Zahl, und keine Hexadezimal?? weil auf meinem anderen Computer gibts auch ne Oktal aus!
lass mal dieses 'cout' weg, das ist doof, macht was es will und stiftet nur verwirrung. nimm 'printf'. beispiel:
#include <stdio.h> int main () { int Var1 = 13; int *pVar1 = &Var1; printf ("%d %x\n", *pVar1, *pVar1); // zugriff über pointer (ausgabe dezimal und hex) printf ("%p\n", pVar1); // inhalt des pointers in hex }
-
Warum soll ich printf nehmen? cout macht doch das selbe oderworin liegt hier der Unterschied?
Funktionieren tut es aber THX
-
PSPfreak20072 schrieb:
Warum soll ich printf nehmen? cout macht doch das selbe oderworin liegt hier der Unterschied?
Funktionieren tut es aber THX
cout macht bei bestimmten Typen eine bestimmte, passende Ausgabe. Ist nur blöd, wenn man das nicht will.
-
_matze schrieb:
cout macht bei bestimmten Typen eine bestimmte, passende Ausgabe.
ja, z.b. bei 'volatile int', hähä.
-
~fricky schrieb:
_matze schrieb:
cout macht bei bestimmten Typen eine bestimmte, passende Ausgabe.
ja, z.b. bei 'volatile int', hähä.
?
-
google -> volatile int -> erster eintrag
cu
-
PSPfreak20072 schrieb:
google -> volatile int -> erster eintrag
bei mir kommt das: http://www.embedded.com/story/OEG20010615S0107
-
Sry wenn man wegen Links nen Bann grigt, aber bei mir kommt halt das:
http://www.hipphampel.de/index.php5?item=cpp/volatile
Edit: aber wenn dann bekommen wir beide einen!
-
PSPfreak20072 schrieb:
Edit: aber wenn dann bekommen wir beide einen!
ich kriege keinen. unregs können nicht gezielt gebannt werden.
-
sry hab ´s nicht gesehn