ERLEDIGT !!! Pointer Problem
-
hoff es ist Ok, dass ich dafür nen neues Thema aufmach.
habe ein zweidimensionales Array erstellt:
int** ppArr; ppArr = new int*[XSIZE] for (int i=0; i<XSIZE; i++){ ppArr[i] = new int[YSIZE]; }nun will ich aber die eigentliche initialisierung in der funktion machen (dadurch kann ich dann später das Array dynamisch resizen)
hab mir da sowas in der Art gedacht:
//in der header wird deklariert int** ppArr; //und in der .cpp per funktion initialisiert void setArray(int x, int y, int** arr){ arr = new int*[x] for (int i=0; i<x; i++) { arr[i]= new int[y]; } } //Aufruf setArray(3,3,ppArr);nun würde mich interessieren, ob dies so möglich ist und wenn ja, wie bekomm ich die funktion richtig zum laufen?
also speziell zeile 5,6 und 8, was muss ich im funktionsaufruf schreiben? stimmt da int** arr ? in zeile 6 und 8 bin ich mir mit der variable arr nicht sicher.
desweitere würd mich der funktionsaufruf interessieren.
-
int** ppArr; //und in der .cpp per funktion initialisiert void setArray(int x, int y, int** arr){ arr = new int*[x] for (int i=0; i<x; i++) { arr[i]= new int[y]; } ppArr = arr; }edit: zeile 9 wurde verändert.
meinst du ppArr = arr ist totaler quatsch , oder wegen der Formatierung?
-
[quote="loe"][cpp]
ppArr = arr // nun gehts
[/cpp]so ein quatsch...
bitte mach in zukunft copy & paste sonst machst end viele fehler rein...
lg lolo
-
evtl. so in der richtung?

#include <iostream> using namespace std; void setArray(int x, int y, int **arr){ *arr = new int[x*y]; } int main() { int *arr=0; int x=10,y=10,yy; setArray(x, y, &arr); while(x--){ yy=y; while(yy--){ arr[x*y+yy] = x*y+yy; } } x=10; while(x--){ yy=y; while(yy--){ cout << arr[x*y+yy] << endl; } } return 0; }
-
nee würd gern mit nem zweidimensionalen array arbeiten
in deinem beispiel ist es ja so das es nur eindimension ist als zeil1 zeile2 zeile3 hintereinander, oder versteh ich da was falsch ?
-
ja mei so ist das nun mal der arbeitsspeicher hat nun mal nur eine dimension alles was du dann sonst noch haben willst must dir eben hin rechnen wie das geht hab ich dir gerade gezeigt

lg lolo
-
ja umrechnen is au kein problem, hatte es ursprünglich eindimensional aber der liebe herr professor will es zweidimensional

aber ich glaub ich habs nun auch hinbekommen.
Danke für deine Hilfe
-
sowas in der richtung könnt ich evtl. noch anbieten, der grund wieso ich so ein hick hack um die function mach ist, das ich keine globale variable drin haben will...
sonst kann man die fast nicht wieder verwenden...
void setArray(int x, int y, int ***arr){ int **ret; ret = new int*[x]; while(x--){ ret[x] = new int[y]; } *arr = ret; } int main() { int **arr=0; int x=10,y=10,yy; setArray(x, y, &arr); while(x--){ yy=y; while(yy--){ arr[x][yy] = x*y+yy; } } x=10; while(x--){ yy=y; while(yy--){ cout << arr[x][yy] << endl; } } return 0; }lg lolo
-
wow du bist top
dickes danke