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]