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 Fehler

    error 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 Bezeichner

    Ich 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 Bezeichner

    F 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 😉


Anmelden zum Antworten