Verständnis Problem mit Arrays



  • Wenn ich Speicher auf dem Heap für Arrays reserviere dann geht das ja z.B. so:

    int *data=new int[50];
    

    Ja gut wenn ich jetzt die einzelnen Elemente für data ansprechen will, dann würde ich das so machen:

    cout << "Feld 1" << *data[0] << endl;
    

    data wir mit * dereferenziert, da ich doch sonst die Adresse bekommen würde? So hab ichs zumindestens in meinem Buch gelernt, Zeiger ohne * geben die Adresse zurück!
    Aber wenn ich das so mache dann kommt ein Error 😞 !
    Wenn ich es aber ohne (*) Dereferenzierungsoperator mache dann geht es:

    cout << "Feld 1" << data[0] << endl;
    

    Also das blick ich jetzt net so ganz warum das so ist?
    Dankeschön schon mal im Voraus.



  • i[x]
    ist das selbe wie
    *(i+x)

    Gilt wenn i vom Typ T* ist.



  • cout << "Feld 1" << *data[0] << endl;

    das würde den int wert in dem array versuchen zu dereferenzieren.

    sagenwirmal data[0] = 50

    *data[0] = Inhalt von Addresse 50

    Das ist natuerlich falsch da du ja Zahlen in deinem Array ablegen wolltest nicht Addressen.

    Korrekt währe es wiederum so:

    (int)*(data+ 0) // Gleichbedeutend mit data[0]
    (int)**(data+ 0) // Gleichbedeutend mit *data[0]


Anmelden zum Antworten