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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.