PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mehrdimensionale arrays übergeben



Roboman93
19.06.2008, 17:01
ich programmiere gerade einen led cube und möchte die animationen in arrays speichern. nun muss ich aber die arrays (z.B. AnimationName[BildNummer][Spalte][Zeile]) an die funktion makeImage übergeben, die die ausgänge schaltet.

weiß jemand, ob dass so geht:

makeImage(AnimationName[][][])
{
...
}

mfg roboman

Felix G
19.06.2008, 17:13
Also so geht das normalerweise nicht...

ich würde einen Pointer auf das erste Element des Arrays übergeben, und dazu noch 3 weitere Parameter mit den Größen der Dimensionen des Arrays.

sehreilig
19.06.2008, 17:16
Ich bin zwar kein c_Crack, meine aber, es müsste so gehen:

makeImages(int AnimationaName[20][20][20]) // beispiel

wobei der Datentyp bzw. die dimensionierung entsprechend deinem array erfolgen muss. Arrays sind von Haus aus bereits Referenzen, d.h. du sagst deiner Funktion, wo das array steht und welcher Typ das ist und dann kann sie das arraylesen und schreiben. Was du dann in der Funktion änderst, wird dann auch direkt im array gespeichert und steht auch in der main zur Verfügung.

Gruss Jens

Roboman93
19.06.2008, 17:50
ok, wenn ich das dann mit nem zeiger mache, sähe das ja so aus, oder:

makeImage(*animationName)
{
}

aber wie komme ich dann in der funktion an die werte von AnimationName[][][]?


mfg roboman

sehreilig
19.06.2008, 18:13
Was ich erinnere ist:
Ein array ist von haus aus eine Referenz auf den Speicherbereich, in welchem das Array liegt, wenn du werte an das array übergibst, werden diese automatisch dorthin geschrieben. Die Werte stehen sowohl in der Funktion als auch im Hauptprogramm zur Verfügung, wenn du deiner Funktion das array so wie oben beschrieben übergibst
Schau auch mal hier:
http://www.c-plusplus.de/forum/viewtopic-var-t-is-170887-and-highlight-is-mehrdimensionales+array+%FCbergeben.html

geronet
19.06.2008, 18:17
Arrays übergibt man an Funktionen nur mit Zeigern, such dir mal ein Beispiel im Netz, gibt genügend.

Grüsse, Stefan

drew
19.06.2008, 20:36
Hallo,
ein zweidimensionales Array kannst Du so übergeben:
funktion(char **Array)
und z.B. so ansprechen:
Array[1][2]=0;

Drew

p_mork
19.06.2008, 21:00
Dem Compiler müssen bei der Übergabe die Größe aller Dimensionen bis auf die erste bekannt sein, Also z.b. so


char array2d[5][10];
void func(char array[][10])

oder


char array3d[5][10][3];
void func(char array[][5][3])


MfG Mark

Roboman93
20.06.2008, 13:06
ok, thx an alle,hat sehr geholfen!

mfg roboman