Hallo, ich hab da eine grundsätzliche Frage ... Ich möchte beispielsweise der Wert 0x3E in ein Array schreiben, welches [128]x[64] groß ist. Ich habs mal versucht unten dazustellen ... Gibt es eine vereinfachte Syntax die man da anwenden kann? array[y8..y1][x1] = 0x3E; <-- gibts sowas ähnliches? Sicherlich eine dumme Frage, aber Google hat mir auch nicht weiter geholfen =( x0 x1 x2 x3 x4 x5 x6 . . . ________________________________ | | | | | | | | y0 | | | | | | | | |____|____|____|____|____|____|____| | | | | | | | | y1 | | 0 | | | | | | |____|____|____|____|____|____|____| | | | | | | | | y2 | | 1 | | | | | | |____|____|____|____|____|____|____| | | | | | | | | y3 | | 1 | | | | | | |____|____|____|____|____|____|____| | | | | | | | | y4 | | 1 | | | | | | |____|____|____|____|____|____|____| | | | | | | | | y5 | | 1 | | | | | | |____|____|____|____|____|____|____| | | | | | | | | y6 | | 1 | | | | | | |____|____|____|____|____|____|____| | | | | | | | | y7 | | 0 | | | | | | |____|____|____|____|____|____|____| | | | | | | | | y8 | | 0 | | | | | | |____|____|____|____|____|____|____| . . . Ich danke für Anworten =)
??? schrieb: > ich hab da eine grundsätzliche Frage ... > Ich möchte beispielsweise der Wert 0x3E in ein Array schreiben, welches > [128]x[64] groß ist. Solche Arrays gibt es in C garnicht. Was du hast sind 128 Arrays, die jeweils 64 Einträge haben... > Gibt es eine vereinfachte Syntax die man da anwenden kann? > > array[y8..y1][x1] = 0x3E; <-- gibts sowas ähnliches? for (int y=y8; y<y1; ++y) array[y][x1]=0x3E;
>Gibt es eine vereinfachte Syntax die man da anwenden kann? >array[y8..y1][x1] = 0x3E; <-- gibts sowas ähnliches? Klar.
1 | for (y = y8; y <= y1; y++) array[y][x1] = 0x3E; |
Schau Dir in einem C-Buch Deiner Wahl an, wie arrays im Speicher angelegt werden.
>Solche Arrays gibt es in C garnicht. Das ist leider falsch. Es gibt mehrdimensionale Arrays in C. >Was du hast sind 128 Arrays, die jeweils 64 Einträge haben... Man kann ein mehrdimensionales Array array[128][64] ganz richtig als array von arrays betrachten (Pascal-Ausdrucksweise) aber eben auch als mehrdimensionales array. Aber es besteht keine Notwendigkeit zu ersterem, weil es mehrdimensionale Arrays "nicht gibt". Der Satz suggeriert ausserdem das ein mehrdimensionales array in C durch mehrere eindimensionale, voneinander durch verschiedene Namen unterschiedene Objekte "emuliert" werden muss. Das ist nicht so.
nicht geprüft, aber so irgendwie wenn kein Fehler drinnen ist
1 | bool[][] array = bool[128][64]; |
2 | |
3 | for(i = 0; i < 8; ++i) { |
4 | array[1 + i][1] = (bool)((0x3e >> (7 - i)) & 0x0f); |
5 | }
|
Qwertz schrieb: >>Was du hast sind 128 Arrays, die jeweils 64 Einträge haben... > > Man kann ein mehrdimensionales Array array[128][64] ganz richtig als > array von arrays betrachten (Pascal-Ausdrucksweise) Das is auch das, was sie in C sind. > Der Satz suggeriert ausserdem das ein mehrdimensionales array in C durch > mehrere eindimensionale, voneinander durch verschiedene Namen > unterschiedene Objekte "emuliert" werden muss. Das ist nicht so. Wo suggeriert es unterschiedliche Namen? Ein mehrdimensionales Array kann in C auf zwei Arten emuliert werden: Über ein Array aus Arrays oder über ein Array aus Zeigern.
mar IO schrieb: > nicht geprüft, aber so irgendwie wenn kein Fehler drinnen ist oder auch nicht... 0x01 statt 0x0f macht vorerst einen besseren Eindruck
Habt vielen Dank. Eure Antworten/Diskussion hat mir sehr weiter geholfen. Grüße
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.