Hallo zusammen, habe ein Problem mit Funktionsprototypen. Ich möchte den Mittelwert und z.B. die Standardabweichung von 100 ADC Messungen bilden und vom Funktionsprototypen zurückgeben lassen. Mittelwert kann ich zurückgeben, aber wie kann ich geschickt einen weiteren Wert zurückgeben. #include <stdio.h> // Funktionsprototyp int wert_adc(char kanal); // Hauptprogramm int main(void) { temp = wert_adc(0); } // Funktionsdefinition int wert_adc(char kanal) { for (i=0;i<50;i++) { temp = read_adc(kanal); temp2 += temp; } return(temp2/1000) }
indem du z.B. einen Zeiger zurückgibst auf ein array (den zeiger mußt du dann auch übergeben du kannst auch 2 werte in einen 32Bit wert kopieren und denn zurückgeben globalen variablen gehen auch oder oder oder
Am geschicktesten über eine weitere Methode. Oder du fügst deiner Methode eine Weitere Variable als Input hinzu und machst deine Ausgabe von dieser Variable abhängig. Oder ich hab deine Frage einfach nicht verstanden.
Eventuell Rückgabe über eine Struktur. GGf muß dafür vorher Speicher bereitgestellt werden. Die Funktion schreibt sein Ergebnis dann in diesen Speicher. Die Funktion könnte auch selber den benötigten Speicher anfordern (malloc) und einen Zeiger zurückgeben (oder NULL, falls etwas schief ging). Den Speicher musst Du nachher natürlich händisch wieder freigeben. Wenn es zwei 8 Bit Werte sind, können diese auch als 16 Bit zurückgegeben werden (union).
Ein Prototyp gibt nichts zurück, aber wahrscheinlich willst du, daß deine Funktion wert_adc() zwei Werte liefert; über den Rückgabewert geht ja nur einer. Eine Möglichkeit ist, entsprechend zwei Zeiger zu übergeben, über die die Funktion dann die beiden Werte beim Aufrufer hinterlegen kann:
1 | #include <stdio.h> |
2 | |
3 | // Funktionsprototyp
|
4 | void wert_adc( int *p_Mittelwert, int *p_Standardabweichung ); |
5 | |
6 | // Hauptprogramm
|
7 | int main(void) |
8 | {
|
9 | int mittelwert, standardabweichung; |
10 | wert_adc( &mittelwert, &standardabweichung ); |
11 | // ... jetzt mittelwert und standardabweichung verwenden
|
12 | }
|
13 | |
14 | // Funktionsdefinition
|
15 | void wert_adc( int *p_Mittelwert, int *p_Standardabweichung ) |
16 | {
|
17 | // irgendwie berechnen....
|
18 | *p_Mittelwert = ...; |
19 | *p_Standardabweichung = ...; |
20 | }
|
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.