Hallo zusammen!

Ich habe schon Pointer benutzt ohne sie je zu verstehen. Bisher habe ich solange rumgebastelt, bis alle Fehler-/Warnmeldungen weg waren. Jetzt habe ich aber ein Array und da hilft alles Basteln nichts mehr

Meine Funktion:
int m3dmg_getOrientationMatrix( int16_t *M ) {
//UART Buffer auslesen
for ( int i=1 ; i <= 18 ; i=i+2 ) {
*M [i] = ( (int16_t) responseBuffer[i] << 8 | (int16_t) responseBuffer[i+1] );
}
return *M;
}

Meine Main:
int main(void) {
int16_t M[9];
...
int itest2=m3dmg_getOrientationMatrix( &M );
...
}

Error:
*M [i] =.....: invalid type argument of 'unary *' (have 'int16_t')
Warning:
int itest2=m3dmg_getOrientationMatrix( &M )...: passing argument 1 of 'm3dmg_getOrientationMatrix' from incompatible pointer type

M ist meine Transformationsmatrix, die ich in einer Unterfunktion einlese. Jetzt will ich das noch in meine Main weitergeben. Neben den Fehlermeldungen habe ich * und & mit denen ich nichts anfangen kann. Habe den starken Verdacht, dass ich gar nicht weiß was ich tue und das mache ich besonders gut
Mein schickes C-Buch ist nicht für meine Gehirnwindungen gemacht worden.

Für Anmerkungen zum Thema und Lösungsvorschläge bin ich sehr dankbar.

Liebe Grüße!
emm