Zeiger mit Inkrement auf Array
-
@manni66 sagte in Zeiger mit Inkrement auf Array:
@bthight sagte in Zeiger mit Inkrement auf Array:
ist das ++ mit dem i direkt verknüpft?
Was sollte
i++
machen? Wozu steht es in der for-Schleife?Jetzt verstehe ich was du meintest.
Ich beziehe mich auf das ++ in der cout Zeile.
Was genau macht das?Nimmt es das i als Inkrement auf?
Weil ich habe ja keine Variable die hochzählt beim cout deklariert.
-
@bthight sagte in Zeiger mit Inkrement auf Array:
Ich beziehe mich auf das ++ in der cout Zeile.
Du hast kein ++ in der cout Zeile.
Was genau macht das?
PointerToArray++;
inkremetiert den Zeiger. i spielt keine Rolle.
-
@bthight sagte in Zeiger mit Inkrement auf Array:
Ich beziehe mich auf das ++ in der cout Zeile.
Das
cout
ist mit dem ; vorbei
-
Aaah. Also ist das sozusagen reiner Zufall, dass das Inkrementieren des Zeigers mittels ++ das gleiche Ergebnis bringt wie [i].
-
@bthight sagte in Zeiger mit Inkrement auf Array:
Aaah. Also ist das sozusagen reiner Zufall, dass das Inkrementieren des Zeigers mittels ++ das gleiche Ergebnis bringt wie [i].
Nein, da ist nichts dran Zufall, das Programm macht absolut vorhersagbar genau das, was es tut. Du bist bloß total verwirrt. Hast du vielleicht anderen Code gepostet als den, über den du gerade nachdenkst? Es macht den Eindruck, du verstehst nicht, worauf die Antworten sich beziehen.
-
@bthight sagte in Zeiger mit Inkrement auf Array:
Aaah. Also ist das sozusagen reiner Zufall, dass das Inkrementieren des Zeigers mittels ++ das gleiche Ergebnis bringt wie [i].
Dass i mal + 1 das Gleiche ergibt wie + i ist kein Zufall.
-
@bthight sagte in Zeiger mit Inkrement auf Array:
PointerToArray+=i; //hier kommt kompletter Käse raus
Das
i
das Du hier verwendest ist das aus (hier im Forum) Zeile9
. Diesesi
ist nicht dasselbe das Du in derfor
-Schleife verwendest. Es ist Uninitialisiert. Kein Wunder daß da "Käse" rauskommt.Für die Zukunft: Schreibe bitte in eine Zeile vor Deinem Code
```
und in eine Zeile nach Deinem Code```
. Oder markiere Deinen Code und klicke auf das</>
in der Bearbeitungsleiste über Deinem Beitrag. Du kannst Deinen Beitrag auch im Nachhinein noch bearbeiten. Den Menüpunkt "Bearbeiten" findest Du hinter dem Drei-Punkte-Menü rechts unter Deinem Beitrag.```cpp
und mit```
abschließen geht für C++ auch.
-
@bthight sagte in Zeiger mit Inkrement auf Array:
PointerToArray++
verändert den Pointer (der zeigt auf die nächste Speicherstelle vom Typ *PointerToArray)
PointerToArray[i]
verändert den Pointer nicht
PointerToArray +=i
verändert den Pointer (der zeigt i Speicherstelle (vom Typ *PointerToArray) weiter)Gerade beim letzten musst du aufpassen, wenn du i als Schleifenzähler hast.
Wenn du das mit "normalen" Variablen machst, wäre das in etwa so:
int j = 0; for (int i=0;i<=4; i++) { cout << j << " " << endl; // immer nur eine Zeile unkommentiert lassen: // j++; // j; j += i; }
-
@DirkB sagte in Zeiger mit Inkrement auf Array:
@bthight sagte in Zeiger mit Inkrement auf Array:
PointerToArray++
verändert den Pointer (der zeigt auf die nächste Speicherstelle vom Typ *PointerToArray)
PointerToArray[i]
verändert den Pointer nicht
PointerToArray +=i
verändert den Pointer (der zeigt i Speicherstelle (vom Typ *PointerToArray) weiter)Gerade beim letzten musst du aufpassen, wenn du i als Schleifenzähler hast.
Wenn du das mit "normalen" Variablen machst, wäre das in etwa so:
int j = 0; for (int i=0;i<=4; i++) { cout << j << " " << endl; // immer nur eine Zeile unkommentiert lassen: // j++; // j; j += i; }
vielen vielen Dank dafür !!
mein Code war etwas komisch geschrieben wahrscheinlich, sodass nicht jeder diesen sofort verstanden hat.Aber diese du hast meine Frage hiermit beantwortet.
-
@Quiche-Lorraine sagte in Zeiger mit Inkrement auf Array:
int *PointerToArray = 0;
Das ist kein Pointer auf ein Array (von int) sondern ein Pointer auf int.
Der Sprachgebrauch (und damit das Verständnis) ist ziemlich wirr, wie üblich, wenn C++ler meinen, sich mit C Zeigern beschäftigen zu müssen.Und ein Array lässt sich auch nicht inkrementieren, weil es ein unmodifizierbarer Lvalue ist, um mal auf die Überschrift dieses Beitrages einzugehen.
-
@bthight
Es gibt noch zwei andere, moderene Varianten über ein Feld zu iterieren:#include <iostream> #include <algorithm> using namespace std; int main() { int Array[] = { 1, 22, 33, 44, 55 }; // 1. Variante for (int Element : Array) { cout << Element << endl; } // 2. Variante for_each(std::begin(Array), std::end(Array), [](int Element) { cout << Element << endl; }); return 0; }