Hi. Es ist mir echt peinlich zu fragen, aber ich krieg es einfach nicht hin ein mehrdimensionales Array zu füllen (mit WinAVR). Ich hab das Array als globale Variable erstellt (noch vor der main() ): char Bildbuffer[3][3]; und in der Main will ich da dann verschiedene Bilder einfüllen und dachte mir das ginge so: int main(void) { . . . Bildbuffer[][] = { {1,1,1} , {1,1,1} , {1,1,1} }; . . . } Funktioniert leider nicht, bekomme die Fehlermeldung: " main.c:107: error: parse error before ']' token " (Zeile 107 ist die "Bildpuffer[][] = ..." Zeile) Der Bildbuffer ist in echt natürlich nicht 3x3 groß, aber die Tipperei wäre für's erklären ziemlich übertrieben den 11x11 Buffer einzugeben... Wäre sehr nett wenn mir kurz wer weiterhelfen könnte. Für einen Link zu ner guten Anleitung wäre auch dankbar, damit ich wegen so nem Kinderkram nicht nochmal nerven muss :-) Danke schonmal! ____________________ http://www.dark-sun.de
Sowas geht nur als Initialisierung (also direkt dort, wo die Variable definiert wird), nicht als Zuweisung.
versuche es mal folgendermaßen: char x[3][3]; ... int main() { ... for ( int i = 0; i < 3; i++) { for ( int j = 0; j < 3; j++) x[i][j] = 1; } ... } das sollte funktionieren! ;)
Jo, so mache ich es momentan auch. Bin ich schon vorher ganz alleine drauf gekommen ggg Aber dazu nochmal ne Frage. Gibt es eine einfache Möglichkeit Arrays umzuladen? Das Array Buffer wird ständig von einer Funktion ausgegeben, daher müssen die verschiedenen Bilder, die ich einfach als eigene Arrays erstelle da reingeladen werden. Momentan sieht es so aus:
1 | char Buffer[3][3] = { {0,0,0}, |
2 | {0,0,0}, |
3 | {0,0,0} }; |
4 | |
5 | char Bild[3][3] = { { {1,0,1}, |
6 | {0,1,0}, |
7 | {1,0,1} }; |
8 | ... |
9 | int main() |
10 | { |
11 | ... |
12 | for ( int i = 0; i < 3; i++) |
13 | { |
14 | for ( int j = 0; j < 3; j++) |
15 | Buffer[i][j] = Bild[i][j]; |
16 | } |
17 | ... |
18 | } |
Aber kann man es nicht schneller machen indem man das Array Buffer irgendwie als Zeiger auf das Array Bild umreferenziert? Stand mit Pointern schon immer auf Kriegsfuß und dazu kommt noch dass ich seit Ewigkeiten nicht mehr geproggt habe...
> Aber kann man es nicht schneller machen indem man das Array Buffer > irgendwie als Zeiger auf das Array Bild umreferenziert? Sicher. Wenn du das Array an eine Funktion übergibst zur weiteren Bearbeitung, wird ohnehin nur ein Zeiger weitergegeben. Einen Zeiger umlegen geht auch, allerdings macht sich das bei mehrdimensionalen Arrays nicht ganz so einfach. Der Funktionsaufruf (der ja implizit nur einen Zeiger vermittelt) ist da einfacher. Die Funktion kann ja durchaus auch inline sein, wenn du den Overhead scheust.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.