pointer frage
-
Hi
hier ist der main teil:int main() { int wieviel; cout << "\nWie viele Daten wollen Sie einlesen?"; cout << "\nGeben Sie 0 fuer Abbruch ein: "; cin >> wieviel; if(wieviel == 0) exit(1); // beendet ein Programm, cstdlib wichtig!! int* feld = new int [wieviel]; // Zeiger feld auf Array for(int i = 0; i < wieviel; i++) { cout << "\nFeld Nummer " << i << " eingeben: "; cin >> feld[i]; // Pointer auch als Felder nutzen } for(int j = 0; j < wieviel; j++) { cout << "\nMit Zeiger > " << *(feld + j); cout << "\nMit Feldname > " << feld[j]; } fflush(stdin); cin.peek(); return 0; }Mir gehs nur um die beiden letzten cout - Zeilen:
*(feld + j) und feld[j] geben das gleiche Ergebnis raus...
nur ich versteh nicht, wieso... springt *(feld + j) die Bytes von einem Element nicht sofort weiter?? so das gar nicht das 0te Element berührt wird??
Ich hoffe ihr versteht mich

Ciao

-
Für Built-in-Types (und auch für Klasse wenn du nicht die ensprechenden Operatoren überlädst) gilt wirklich dass
*(pointer +n)
das selbe ist wie
pointer[n]Wenn du zu einem Pointer n "addierst" erhälts du einen Pointer der n-te Element hinter dem Pointer zeigt. Die Erhöhung in Bytes kommt also auf den Typ an. Du kannst deshalb auch keine void* erhöhen.
Du solltest drauf achten deine Arrays auch wieder ordnungsgemäß aus dem Speicher zu entfernen.
Gruß
-
gut danke...
dann versteh ich das jetzt!
