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???
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.