www.mikrocontroller.net

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


Autor: ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 =)

Autor: 6to4 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;

Autor: Qwertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Gibt es eine vereinfachte Syntax die man da anwenden kann?

>array[y8..y1][x1] = 0x3E; <-- gibts sowas ähnliches?


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

Autor: Qwertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: netdieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Stichwort heist Pointer Arithmetik


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

Autor: mar IO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nicht geprüft, aber so irgendwie wenn kein Fehler drinnen ist
bool[][] array = bool[128][64];

for(i = 0; i < 8; ++i) {
    array[1 + i][1] = (bool)((0x3e >> (7 - i)) & 0x0f);
}

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mar IO (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habt vielen Dank.
Eure Antworten/Diskussion hat mir sehr weiter geholfen.

Grüße

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.