Hilfe bei Pointer Aufgabe gesucht c++



  • Heia ihr lieben,
    ich weiß, dass die Lösung der Aufgabe der kurz sein muss...nur fehlt mir ein Ansatz..das Thema verwirrt mich ehrlich gesagt noch etwas, und morgen ist schon Abgabe o.o

    Die Aufgabe:

    Erstellen Sie ein C++ Programm, dass in seinem main() Part einen Zeiger vom Typ int allokiert. Weisen Sie dem Zeiger den Wert 21 zu. Geben Sie den Inhalt auf den der Zeiger verweist exakt wie folgt aus:
    Inhalt Zeigervariable: 21
    Löschen Sie anschließend den Zeiger um den Speicherbereich wieder freizugeben!

    Bin für jede Hilfe dankbar 🙂



  • Ansatz

    int main()
    {
    }
    

    Den Rest schaffst du dann sicher selber.



  • Danke für die tolle Hilfe



  • kira123 schrieb:

    Danke für die tolle Hilfe

    Wenn jemand so motiviert ist hilft man doch gerne.



  • Wenn das Ganze dich verwirrt, wieso stellst du dann keine Fragen dazu?^^



  • Was solls? Die Aufgabe ist widersprüchlich und genau genommen nicht lösbar.



  • Diese Inkompetenz der "Lehrer" ist nur noch traurig.



  • Die Aufgabe ist wirklich total schlecht gestellt. Der "Lehrer" hat keine Ahnung und sollte erst mal ein gutes C++-Buch lesen. Damit Du kapierst, was er vermutlich meint, auch wenn er nicht in der Lage ist, es richtig zu formulieren, hier ein kleines Programm mit Erläuterungen:

    #include <iostream>
    
    int main() {
      int* zeigerAufInt; // Definition eines zeigers
      zeigerAufInt = new int;  // Allokation von Speicher
      // zeigerAufInt enthält danach die Adresse der Speicherstelle. 
      // Ein Zeiger wird nicht allokiert!
      std::cout << "Inhalt Zeigervariable: " 
                << *zeigerAufInt << '\n';
      delete zeigerAufInt; // Hier wird NICHT der Zeiger gelöscht,
      // sondern der Speicher, auf den er zeigt freigegeben!
      std::cout << "Zeiger existiert noch. Adresse, auf die er zeigt=" 
                << zeigerAufInt << '\n';
      // Auf *zeigerAufInt darf jetzt nicht mehr zugegriffen werden.
    }
    

    Die ersten beiden Zeilen schreibt man üblicherweise als eine:

    int* zeigerAufInt = new int;
    

    Zeige dem "Lehrer" das Programm mit den Kommentaren. Vielleicht wird er wenigstens rot.



  • sogehts schrieb:

    Die ersten beiden Zeilen schreibt man üblicherweise als eine:

    int* zeigerAufInt = new int;
    

    Und warum nicht gleich:

    int* zeigerAufInt = new int( 21 );
    std::cout << *zeigerAufInt;
    

    ?



  • Egalwat. Der Threadersteller befindet sich in einem Anfänger-C++-Grundkurs und die Fragestellung des Lehrers ist korrekt formuliert und wenn man im Kurs aufgepasst hat sehr wohl lösbar.



  • Sehe ich nicht so. Nach der Formulierung

    Lehrer schrieb:

    Weisen Sie dem Zeiger den Wert 21 zu. Geben Sie den Inhalt auf den der Zeiger verweist ...

    müßte der Code so aussehen:

    int* zeigerAufInt = (int *)21;
    
    cout << *zeigerAufInt;
    

    Und das wäre dann wohl UB.



  • Naja, "Weisen Sie dem Zeiger den Wert 21 zu." verstehe ich jetzt erstmal als

    int* zeigerAufInt;
    zeigerAufInt = 21;
    

    Und das geht nicht. Jetzt ist Mitdenken sicher nicht verboten (sehr wichtig!) und man kann überlegen, was wohl gemeint ist:

    *zeigerAufInt = 21; // (a)
    zeigerAufInt = (int*)21; // (b)
    

    Da (b) keinen Sinn ergibt und vermutlich Casts noch nicht einmal gelehrt wurden, bleibt nur (a) übrig. Präzises Formulieren ist zwar wichtig und die Aufgabe ist etwas sloppy formuliert, aber aus dem Kontext wird doch alles klar!


Anmelden zum Antworten