Hallo, ich habe ein problem mit dem Übergeben von 2-dimensionalen Arrays. In meinem main.c werden ein 1-dim und ein 2-dim array erzeugt: uint16_t pulsmuster[36][6] = {......}; uint16_t phasen[6] = {......}; Diese beiden Arrays will ich nun in einer Funkton aufrufen. Dazu benutze ich die extern Anweisung und lade sozusagen die Arrays in die Funktion. extern uint16_t pulsmuster[][]; extern uint16_t phasen[]; Bei dem 1-dim array funktioniert das, bei dem anderen allerdings nicht. Wäre über Hilfe sehr dankbar ! Grüße
Bei der Deklaration von Arrays müssen immer mindestens alle Dimensionen bis auf die erste angegeben werden. Falsch:
1 | extern uint16_t pulsmuster[][]; |
Richtig:
1 | extern uint16_t pulsmuster[][6]; |
oder
1 | extern uint16_t pulsmuster[36][6]; |
> ich habe ein problem mit dem Übergeben von 2-dimensionalen Arrays. Eigentlich gibt es in C keine zweidimensionalen Arrays. Manchmal ist es für das Verständnis hilfreich, wenn man sich vor Augen hält, daß es sich um ein Array aus Arrays handelt. > Diese beiden Arrays will ich nun in einer Funkton aufrufen. Arrays kann man nicht "aufrufen". Das kann man nur mit Funktionen machen. > extern uint16_t pulsmuster[][]; > extern uint16_t phasen[]; > > Bei dem 1-dim array funktioniert das, bei dem anderen allerdings nicht. Das liegt daran, daß er die Größe nicht kennt. Er muß ja für einen Zugriff auf ein Element immer dessen Offset zum Anfang des Arrays berechnen. Bei einem eindimensionalen Array ist das kein Problem. Er muß nur den Index mit der Elementgröße multiplizieren. Aber beim zweidimensionalen geht das nicht mehr. Da muß er auch die Größe des "inneren" Arrays kennen.
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.