pointers - hacking



  • Content:
    • Declare two integer variables a and b, and an integer pointer pint.
    • Initialize the variables with a = 5 and b = 10, and let the pointer initially pointing to the address of a. Print out the values and the addresses of the variables and the pointer on the console.
    • The address which the pointer pointed to can be transferred from a to b by simply adding or subtracting a number. Set this input number with the keyboard.
    • Then print out the values and the addresses of a, b and *pint on the console again.
    • If the address of *pint equals to the address of b. Enter a new value 15 now using the pointer. And print out the values and the addresses of a, b and the pointer again.

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int a = 5;
        int b = 10;
        int *pint= &a;
        int n;
    
        cout<<"a: "<<a<<"\t&a: "<<&a<<endl;
        cout<<"b: "<<b<<"\t&b: "<<&b<<endl;
        cout<<"*pint: "<<*pint<<"\tpint: "<<&*pint<<endl;
        cout<<"Enter val for pointer manipulation: ";
        cin>>n;
        *pint+=n;
        cout<<"a: "<<a<<"\t&a: "<<&a<<endl;
        cout<<"b: "<<b<<"\t&b: "<<&b<<endl;
        cout<<"*pint: "<<*pint<<"\tpint: "<<&*pint<<endl;
    
        return 0;
    }
    

    Ich komme an der Stelle nicht mehr weiter, wo man den pointer manipuliert....ich hab jegliche varianten versucht, aber leider nicht zum erfolg 😕 😕


  • Mod

    Zeile 13: Du gibst nicht den Wert und die Adresse des Zeigers aus, sondern das, worauf der Zeiger zeigt und die Adresse dessen, worauf der Zeiger zeigt. Nicht im Sinne der Aufgabe.
    Zeile 16: Wieder manipulierst du nicht den Zeiger, sondern das, worauf er zeigt. Lass überall das Dereferenzieren sein! Es geht hier schließlich darum, den Zeiger selbst zu ändern.
    Zeile 19: Siehe Zeile 13.



  • da der pointer auf die adresse von a zeigen soll...soll doch die ausgabe identisch sein wie die von a und adresse von a?


  • Mod

    ChillStudent schrieb:

    da der pointer auf die adresse von a zeigen soll...soll doch die ausgabe identisch sein wie die von a und adresse von a?

    Die Ausgabe ist identisch mit dem Wert und der Adresse von a. Aber es ist nicht der Wert und die Adresse des Pointers! Diese sind es schließlich, die du ausgeben wolltest. Der Pointer ist eine eigene Variable mit einem eigenen Wert und einer eigenen Adresse. Diese sollst du ausgeben und später manipulieren.

    Aus deinem anderen Thread, falls du es nicht gesehen hast:
    https://www.youtube.com/watch?v=i49_SNt4yfk



  • zu der Zeile 13

    einfach *pint und pint ausgeben?


  • Mod

    ChillStudent schrieb:

    zu der Zeile 13

    einfach *pint und pint ausgeben?

    Nein, immer noch nicht. Was bedeutet ein Sternchen bei Zeigern? Was bedeuten (allgemein) &-Zeichen angewandt auf eine Variable? Was möchtest du hier erreichen?

    Bitte nicht so lange alle Kombinationen von * und & durchprobieren, bis du zufällig die Lösung triffst. Nachdenken!



  • ich komme leider nicht auf die lösung :S
    pointers liegt mir nicht so, obwohl es bestimmt ziemlich einfach ist...

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int a = 5;
        int b = 10;
        int *pint= &a;
        int n;
    
        cout<<"a: "<<a<<"\t&a: "<<&a<<endl;
        cout<<"b: "<<b<<"\t&b: "<<&b<<endl;
        cout<<"*pint: "<<*pint<<"\tpint: "<<pint<<endl;
        cout<<"Enter val for pointer manipulation: ";
        cin>>n;
        pint = &b;
        cout<<"a: "<<a<<"\t&a: "<<&a<<endl;
        cout<<"b: "<<b<<"\t&b: "<<&b<<endl;
        cout<<"*pint: "<<*pint<<"\tpint: "<<pint<<endl;
    
        return 0;
    }
    

    ich weiß leider echt nicht weiter....sterchenchen auf ein zeiger heißt, dass die variable eine adresse eines integer wertes aufnehmen kann?
    und & heißt es greift auf die Adresse zu?


  • Mod

    ChillStudent schrieb:

    ich weiß leider echt nicht weiter....sterchenchen auf ein zeiger heißt, dass die variable eine adresse eines integer wertes aufnehmen kann?
    und & heißt es greift auf die Adresse zu?

    Völlig daneben. Vielleicht solltest du dir nochmal den Lehrstoff oder die gegebenen Links ansehen? Du scheinst das Grundprinzip überhaupt nicht verstanden zu haben.



  • ich würde mich ja gerne nochmal hinsetzen und alles durcharbeiten, aber muss die aufgabe gleich hochladen...
    trotzdem danke ich euch für eure mühe 🙂


Anmelden zum Antworten