hallo Leute,
ich möchte ein Array erstellen damit ich einen Raster darstellen kann! und das mache ich wie folgt:
float grenzen[6];
float xkoord, ykoord;
int xdim,ydim;
int xmin ,xmax ,ymin ,ymax;
// geometrische Grenzen in x und y Richtung auslesen
polydata->GetBounds(grenzen); //(xmin,xmax,ymin,ymax, zmin,zmax).
xmin = grenzen[0] - 20;
xmax = grenzen[1] + 20;
ymin = grenzen[2] - 20;
ymax = grenzen[3] + 20;
// Akkumulator mit Raster 1mm für x-y Ebene einrichten
xdim = xmax - xmin;
ydim = ymax - ymin;
int akkumulator[xdim][ydim];
aber beim Kompilieren kommt immer die Fehlermeldung, dass für akkumulator[][] "konstante Ausdruck erwartet" ist und "error C2466: Reservierung eines Feldes der konstanten Groesse 0 nicht moeglich"
wie könnte ich das realisieren! warum werden xdim und ydim, die ich oben berechne nicht angenohmen!??
ich bedanke mich im Voraus....
Chrakhan
Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge
Wie bereits gesagt, kommst du bei einem anständigen Compiler nicht um eine dynamische Allokation rum (auch wenn ich schon C compiler gesehen hab die sowas fressen)
erstmal die Korrektur:
Da du ein Array vom typ int anlegst musst du nicht angeben wie groß die einzelnen Felder sind. So schlau ist der Compiler grad noch
int* pAkkum = new int[ xdim * ydim ];
bei malloc, bzw folgendem Konstrukt ist die Angabe nötig:
int* pAkkum = (int*)((void*) new char[ xdim * ydim *sizeof(int) ]);
int* pAkkum2 = (int*) malloc( xdim * ydim * sizeof(int) );
Jetzt noch zu mehrdimensionalen Arrays:
int **ppAkkum = new *int[xdim];
for ( int i = 0; i
Auf jeden Fall darfst du nicht vergessen die Arrays zu initialisieren!
Nachteile der mehrdimensionalen Arrays:
mehr Aufwand beim erstellen,
mehr Aufwand beim Löschen,
einfacher langsameren Code zu schreiben :-)
Vorteile
bequem und einfach zu benutzen sobald allokiert.
Lesbarer Code