Funktionsprototyp

Gast #1323856
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)
}
Persönliche Seite #1323866
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).
#1323878
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
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren