Forum: PC-Programmierung C - Array - Verständnisfrage


von ??? (Gast)


Lesenswert?

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 =)

von 6to4 (Gast)


Lesenswert?

??? 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;

von Qwertz (Gast)


Lesenswert?

>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.

von Qwertz (Gast)


Lesenswert?

>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.

von netdieter (Gast)


Lesenswert?

Das Stichwort heist Pointer Arithmetik


Z.B:
http://www.peacesoftware.de/ckurs12.html

von mar IO (Gast)


Lesenswert?

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
}

von Rolf Magnus (Gast)


Lesenswert?

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.

von mar IO (Gast)


Lesenswert?

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

von ??? (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.