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"
Halt...Fehler...das Array habe ich so angelegt: struct step_arr{ volatile BYTE a_note_nr:3; volatile BYTE legato:1; volatile BYTE n_length:4; } step[16];
so wie du das schreibst brauchst ja keinen Zeiger. a=step.legato sollte gehen. Wenn mit zeiger dann step_point->legato
Also a=step.legato geht auf keien fall, weil step ja ein Array ist und keine Struktur.
Hi step_point ist ein Pointer auf den ersten Arrayeintrag. Zugriff also per -> Operator step_point->legato = foo; was eine Kurzform für (*step_point).legato = foo; ist. Matthias
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...
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.