Zeiger mit Inkrement auf Array
-
@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; }