IndigoGott hat geschrieben:Dann hab ich Frage zu realloc (Hab schon im Wiki gelesen, aber es sagt nicht genau, wie es funktioniert):
wenn man realloc vereinfacht, sieht man das -> werte = (int*)realloc(werte, x*sizeof(int))
Frage: Was ist hier das x, wie kann man das im Prinzip denken?
Im Wiki steht statt dessen, ein Konstantes
numbers = (int*) realloc (numbers, count * sizeof(int));
Das x * sizeof( int ) ist die neue Größe des Arrays. Wenn Du x Integers speichern möchtest, brauchst Du entsprichend x * sizeof( int ) Bytes Speicher. Du übergibst Dein altes Array an realloc und bekommst eventuell einen neuen Zeiger zurück. Darum musst Du den Zeiger wieder neu speichern.
Da Du mit operator << mehr Speicher brauchst und weißt, dass Du m.anzahl Integers schon speicherst, brauchst Du nun eins mehr. Du vergrößerst das Array also auf die Größe, die (m.anzahl + 1) Integers benötigen.
Alle Fragen beantwortet? Bei Deinem letzten Post verstehe ich nicht ganz, ob Du noch eine andere Frage hast.
... neuer Frage gepostet:
IndigoGott hat geschrieben:Wie kann man wissen, wann man einen Referenzoparator & geben muss und wann nicht?
Das kommt drauf an, was Du tun möchtest.
Bei operator << möchtest Du das aktuelle Objekt zurückgeben, das Du auf der linken Seite hast, damit Du m << 1 << 2; schreiben kannst. m << 1 liefert m zurück, so dass als nächstes m << 2 ausgeführt werden kann.
Also gibst Du eine Referenz auf m zurück. Lässt Du den Referenzoperator weg, gibst Du ein Objekt zurück. Um das neue Objekt zu bekommen wird m kopiert und damit gibt es zwei gleiche, aber nicht identische Objekte. Du willst aber weiterhin Dein m-Objekt verändern und keine Kopien anfertigen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.