www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Funktionsprototyp


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)
}

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frederik Krämer (n0ll4k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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:
#include <stdio.h>

// Funktionsprototyp
void wert_adc( int *p_Mittelwert, int *p_Standardabweichung );

// Hauptprogramm
int main(void)
{
  int mittelwert, standardabweichung;
  wert_adc( &mittelwert, &standardabweichung );
  // ... jetzt mittelwert und standardabweichung verwenden
}

// Funktionsdefinition
void wert_adc( int *p_Mittelwert, int *p_Standardabweichung )
{
  // irgendwie berechnen....
  *p_Mittelwert = ...;
  *p_Standardabweichung = ...;
}

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten Dank für die schnelle Hilfe.
Funktioniert prima!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.