Hallo Gerhard,
1. int MW[3]; ist eine automatische lokale Variable und wird auf den Stack abgelegt wenn die Funktion aufgerufen wird.
Wenn die Funktion mit return beendet wird, wird aber er Stack wieder abgeräumt, inklusive der Variablen MW.
Abhilfe:
entweder
a) static int MW[3];
b) MW als globale Variable deklarieren
c) Die Funktion mess() so schreiben, dass das Array als Zeiger auf das Array übergeben wird. Dann muss der Speicherplat für MW im AUfrufenden Teil deklariert werden.
2. Die Funktion soll einen int zurückgeben.
MW[] ist aber ein Zeiger auf eine Array aus int.
MW[] entspricht &MW[0]
Du müsstest also
int *mess()
schreiben, dann sollte das Compilieren gehen, aber das zurückgelieferte Array kann dann irgendwelche Random Werte enthalten. Es kann dann manchmal die gewünschten Werte enthalten und, wenn z.B. ein Interrupt auftritt, nur noch irgendwelchen Schrott.
MfG Peter(TOO)
Lesezeichen