Forum: Mikrocontroller und Digitale Elektronik Funktionsprototyp


von Gast (Gast)


Lesenswert?

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)
}

von ... .. (docean) Benutzerseite


Lesenswert?

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

von Frederik K. (n0ll4k)


Lesenswert?

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.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

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).

von Klaus W. (mfgkw)


Lesenswert?

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
}

von Gast (Gast)


Lesenswert?

Besten Dank für die schnelle Hilfe.
Funktioniert prima!

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
Noch kein Account? Hier anmelden.