Hilfe bei Pointer Aufgabe gesucht c++



  • 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