Forum: Mikrocontroller und Digitale Elektronik Field in 3 Teile


von Andreas Fertl (Gast)


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 ?
1
   union{
2
      char cVideoShadow[24][8];
3
      struct{
4
         char cVideoShadowPart1[8];
5
         char cVideoShadowPart2[8];
6
         char cVideoShadowPart3[8];
7
      }sInThreeParts;
8
   }sVideoShadow;

Danke
Grüße Andreas

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wie meinen?

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

von Karl H. (kbuchegg)


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.

von Andreas Fertl (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


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;

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.