Zeigerarray in Schleife initalisieren schlägt fehl
-
Hi,
folgender Code bricht beim zweiten Hauptschleifen durchlauf ab
int **i = new int*[5]; //deklariert einen Zeiger der 5 neue Zeiger // deklariert for(int k=0;k<5;++k) { i[k] = new int[10]; //deklariert für jeden der 5 Zeiger 10 int Felder for(int y=0;y<10;++y) { i[k][y] = y; //weißt jedem der 10 int Felder die aktuelle //Zählervariale zu cout << "Durchlauf Nr: " << y << "\n"; //Kontrollausgabe } }
(falls die Kommentare im Code falsch sind bitte berichtigen)
das Programm sollte eigentlich 5 mal so eine Reihe ausgaben"Durchlauf Nr: 0"
"Durchlauf Nr: 1"
"Durchlauf Nr: 2"
"Durchlauf Nr: 3"
"Durchlauf Nr: 4"
usw. bis 9 und dann wieder bei 0 anfanen aber anstat das zu tuenen wird die Hauptschleife nur zweimal durchlaufen.Und noch eine Frage wie kann ich solch ein Array an eine Funktion übergeben:
int i[5][10] also das kompltte Array auf einmal, funk(i).thx
-
Tag,
Also das sieht so alles ganz richtig aus. Ich wüde aber sagen du solltest den post-increment operator benutzen,da du sonst im Array bei arr[1] anfängst zu zuweisen was zu Problemen führt.
Also statt ++k k++. Dann müsste es gehen.
-
Hi,
bei mir funzt es so, wie Du es angegeben hast.
An eine Funktion übergibst Du das Array halt als Zeiger auf einen Zeiger.
Bsp:
void foo(int **zweidimarray);
grüße Con@n
-
prolog schrieb:
Tag,
Also das sieht so alles ganz richtig aus. Ich wüde aber sagen du solltest den post-increment operator benutzen,da du sonst im Array bei arr[1] anfängst zu zuweisen was zu Problemen führt.
Also statt ++k k++. Dann müsste es gehen.
Das halte ich für ein Gerücht. Der Code oben ist richtig.
-
Weiß der Geier hab den Code gerade nochmal getestet und laeuft einwandfrei. Weiß nicht woran es lag.