mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Field in 3 Teile


Autor: Andreas Fertl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

ich bin mir nicht ganz sicher ob ich mit dieser union / struct wirklich
dass ereich was ich möchte.
Den VideoShadow in 3 Teile aufteilen.
Part1 ist von [0][8] - [7][8]
Part2 ist von [8][8] - [15][8]
Part3 ist von [16][8] - [24][8]

denke ich richtig ?
   union{
      char cVideoShadow[24][8];
      struct{
         char cVideoShadowPart1[8];
         char cVideoShadowPart2[8];
         char cVideoShadowPart3[8];
      }sInThreeParts;
   }sVideoShadow;

Danke
Grüße Andreas

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie meinen?

Hast Du Dich verschrieben und möchtest ein Array mit 24 Elementen auf
drei Arrays mit je 8 Elementen abbilden?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versteh ich dich richtig?

cVideoShadowPart1 soll umfassen
      cVideoShadow[0][8], cVideoShadow[1][8], cVideoShadow[2][8], ...
      cVideoShadow[6][8], cVideoShadow[7][8]

Wenn ich das so richtig interpretiere, dann wird das nichts.
cVideoShadow[0][8] und cVideoShadow[1][8] liegen 8 Bytes
auseinander.

In C laeuft der letzte Index am schnellsten.
D.h. Du hast im Speicher folgende Anordnung
  [0][0] [0][1] [0][2] [0][3] [0][4]
  +------+------+------+------+------+  ....

Da kannst Du unions machen was Du willst, du wirst da niemals
alle [x][8] hintereinanderliegend kriegen.

Autor: Andreas Fertl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaub ich hab nen denkfehler ;)

ich möchte ein 2 dimensionales array mit 24 elementen (xWert) und 8
(yWert) elementen auf jeweils 3 arrays mit 8 (xWert) elementen und 8
(yWert) elementen abbilden.

Sozusagen das Feld mit dem XWert aufteilen in drei gleichgroße
bereiche.

Grüße Andreas

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte -theoretisch- so gehen:

   union{
      char cVideoShadow[24][8];
      struct{
         char cVideoShadowPart1[8][8];
         char cVideoShadowPart2[8][8];
         char cVideoShadowPart3[8][8];
      }sInThreeParts;
   }sVideoShadow;

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.