zweidimensionales Array einer Funktion übergeben
-
Gartenzwerg schrieb:
@ Jover: Ich würde ein 2D-Array in ein 1D-Array auf folgende Weise umwandeln
Das wäre dann die letzte Notlösung
-
wieso?
-
hi
so wirklich gefallen, tut es mir nicht, da das Array jetzt auf die 20*20 char's beschränkt ist.
eigentlich 20**^**20 oder
cYa
-
hi,
ich denke 20*20machen wir es mal im kleinen:
char array[2][2]; // z.B. // A A // A A // => 4 Elemente = 2*2 oder 2^2 char array[3][3]; // z.B. // A A A // A A A // A A A // => 9 Elemente = 3*3 oder 3^2
deshalb meine ich 20*20 oder halt 20^2. Aber nicht 20^20.
Tschau Gartenzwerg
-
hi
char a[3][3]; a[0][0]='1'; a[0][1]='2'; a[1][0]='3'; a[1][1]='4'; a[2][2]='5'; a[2][1]='6'; a[1][2]='7'; a[0][2]='8'; a[2][0]='9';
3^3 und nich 3*3
cYa
-
hi,
sag ich doch. So wie du es gemacht hast ist es sogar noch etwas übersichtlicher.
Irren ist menschlich.Tschau Gartenzwerg
-
Also das hier funzt bei mir, es kommt wohl auf die Klammern um *arr an.
#include <iostream> using namespace std; void function(char (*arr)[20], int dim1, int dim2) { // mach was mit arr } int main(){ char array[20][20]; function(array, 20,20); }
Und es sind 3*3 = 9 und nicht 3^3 = 27, aber was besaeftige ich mich ueberhaupt mit der Kinderk****
-
class GoL { int columns; bool **cells; public: void init(); bool getCell(int index1, int index2); void setColumnCount(int cols); } void GoL::init() { cells = &(new bool[columns]); for (int i=0; i<columns; i++) cells[i] = new bool[columns]; // ... } bool GoL::getCell(int index1, int index2) { return cells[index1][index2]; } void GoL::setColumnsCount(int cols) { columns = cols; }
So jetzt läuft das mit dem 2D Array so ungefähr.
Aber wenn ich die Funktion getCell(...) aufrufe, dann bekomme ich einen Fehler.
Warum ist das so?Weiter unten in der init() Funktion greife ich auf die gleiche Weise auf das Array zu, bekomme aber keinen Fehler.