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;
    }
    

Anmelden zum Antworten