Wert im Pointer inkrementieren bzw. dekrementieren - gelöst



  • out schrieb:

    Hmm, wusste gar nicht, dass man für new <new> inkludieren muss.

    IIRC nur fuer operator new.



  • out schrieb:

    Hmm, wusste gar nicht, dass man für new <new> inkludieren muss.

    Muss man nicht, oder? Wie hast du das gefolgert?



  • out schrieb:

    Schau mal welchen Typ der Operator new zurückgibt. Und dann schau, welchen Typ i hat. http://www.cplusplus.com/reference/new/operator new/

    Hmm, wusste gar nicht, dass man für new <new> inkludieren muss.

    Wird für den "normalen" operator implizit inkludiert.
    Für placement_new/nothrow braucht man aber den Header, wenn ich mich nicht irre.



  • silent_max, dann schau nochmal in den C++ Büchern nach, die du angeblich besitzt, was Zeiger sind und wie die funktionieren.



  • nman schrieb:

    out schrieb:

    Hmm, wusste gar nicht, dass man für new <new> inkludieren muss.

    IIRC nur fuer operator new.

    Stimmt da war was. Es gibt ja den Operator new und das Keyword new.



  • silent_max schrieb:

    Wenn ich jetzt die Zeile

    i = new float;
    

    kommt bei mir die Meldung

    Error: Wein Wert vom Typ ""float"" kann keiner Entität vom Typ ""float"" zugewiesen werden.
    

    Grundgütiger. Seit wievielen Monaten versuchst Du jetzt diesen Pipifax zu verstehen?
    Du lernst doch aus Der C++ Programmierer, und das ist ein super Buch. Woran bitte liegt es denn, dass Du nicht über die totalen Grundlagen hinauskommst?



  • Wenn ich mir auf Youtube das Video mit Binky anschaue, dann brauche ich ja für mein Vorhaben zwei verschieden Variablen, oder?



  • Was hast du denn vor?



  • Moment mal, silent_max == blurry333?



  • Dinolite schrieb:

    Moment mal, silent_max == blurry333?

    Wer soll denn blurry333 sein???

    @krümelkacker:

    Um am Beispiel der Ziffer 5 zu bleiben.

    Ich habe halt vor, dass zwei verschiede Pointer auf die Ziffer 5 zeigen. Dass dies möglich ist, steht in "Der C++ Programmierer" auf Seite 187 in Abbildung 5.2.

    Nun habe ich jedoch vor, dass der eine Pointer, nennen wir ihn *ip um am Beispiel meines Programmes zu bleiben, die 5 um 1 inkrementiert und der andere Pointer, *ip_2, die 5 um 1 dekrementiert.

    Ist dies überhaupt so in der Form machbar?



  • #include <iostream>
    
    int main()
    {
      float f = 5.f;
      float* p1 = &f;
      float* p2 = &f;
    
      std::cout << p1 << " == " << p2 << '\n';
    
      std::cout << f << '\n';
      *p1 += 1.f;
      std::cout << f << '\n';
      *p2 -= 1.f;
      std::cout << f << '\n';
    }
    

    So? (Wobei ich mir nicht so wirklich sicher bin, was du mit "Ziffer" meinst..)



  • So ... jetzt funktioniert es wie ich mir das vorgestellt habe:

    #include<iostream>
    using namespace std;
    
    int main()
    {
      float f;
      float *p1 = &f;
      float *p2 = &f;
    
      cout << "Geben Sie eine Zahl ein.\n";
      cin  >> f;
    
      cout << p1 << "==" << p2 << "\n";
    
      cout << f << "\n";
      *p1 +=1.f;
      cout << f << "\n";
      *p2 -=2.f;
      cout << f << "\n";
    
      return 0;
    }
    

    Wobei ich mir nicht sicher bin, was beispielsweise bei

    *p1 += 1.f;
    

    das f nach der 1 bedeutet???



  • float



  • silent_max schrieb:

    So ... jetzt funktioniert es wie ich mir das vorgestellt habe:

    Das dürfte nicht mal kompilieren, in den Zeilen 7 und 8 fehlt nämlich was.



  • silent_max schrieb:

    Ich habe halt vor, dass zwei verschiede Pointer auf die Ziffer 5 zeigen. Dass dies möglich ist, steht in "Der C++ Programmierer" auf Seite 187 in Abbildung 5.2.

    Die zwei Pointer zeigen nicht auf die Ziffer 5 sondern auf denselben Speicherbereich, in dem die 5 steht!

    silent_max schrieb:

    Nun habe ich jedoch vor, dass der eine Pointer, nennen wir ihn *ip um am Beispiel meines Programmes zu bleiben, die 5 um 1 inkrementiert

    *ip = *ip + 1;
    

    führt dazu, dass aus der 5, die in dem Speicherbereich steht, worauf der Zeiger ip zeigt, eine 6 wird.

    silent_max schrieb:

    und der andere Pointer, *ip_2, die 5 um 1 dekrementiert.

    Ist dies überhaupt so in der Form machbar?

    Da ip und ip_2 auf denselben Speicherbereich zeigen, ist *ip_2 auch 6!



  • Ja, sorry, editiere ich gleich.

    An wen muss ich mich denn wenden, wenn das Thema gelöst worden ist?



  • silent_max schrieb:

    Ja, sorry, editiere ich gleich.

    An wen muss ich mich denn wenden, wenn das Thema gelöst worden ist?

    Deinen Beitrag editieren und einfach [geloest] hinter Titel setzen.


Anmelden zum Antworten