Zeiger auf struct-Arrays

Gast #284762
Lesenswert?

Hallo Forum,

ich arbeite auf einem ATMega8 und WinAVR. Nun habe ich mir ein Array
aus Strukturen angelegt:

struct step{
  volatile BYTE a_note_nr:3;
  volatile BYTE legato:1;
  volatile BYTE n_length:4;
} step_arr[16];

Dann einen Zeiger für diese Strukturen:

struct step_arr *step_point;

Dann hab ich den Zeiger auf das erste Arrayelement gesetzt:

step_point = step;

Warum kann ich jetzt nicht über

step_point.legato

auf die Strukturvariable zugreifen?
Fehlermeldung:
"midi.c:101: error: request for member `legato' in something not a
structure or union"
#284769
Lesenswert?

Also a=step.legato
geht auf keien fall, weil step ja ein Array ist und keine Struktur.

Aja, übersehen, aber dann sollte

a=step[3].legato

auf den 4. Eintrag zugreifen.

bzw. *(step_point+3)->legato

Man möge mich korrigieren, ich bin mir da auch nie sicher wenn ich
müde/hungrig/durstig bin...
Gast #284770
Lesenswert?

Das funktioniert klar:
a=step[3].legato
Aber bei
*(step_point+3)->legato
steigst du erst ab (*) von deinem Zeiger, benutzt dann aber trotzdem
den Pfeiloperator, das passt auch nicht ganz...
Du hattest Anfangs schon recht mit
step_point->legato
Wenn ich auf den 4.Eintrag im Array zugreifen will muss ich das dann
über
(step_point+3)->legato
machen.

Dank Dir...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren