- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 6 von 6

Thema: rückgabe von variablen aus funktionen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.11.2006
    Beiträge
    40

    rückgabe von variablen aus funktionen

    Anzeige

    Powerstation Test
    Hi, leider bin ich kein c-profi, demenstsprechend habe ich folgendes problem:

    ich möchte einige funktionen für asuro in asuro.c implementieren, in denen bestimmte variablen benutzt werden, auf die jedoch auch das hauptprogramm sowie weitere funktionen in asuro.c zugreifen müssen. wie geht das?

    ich weiss dass es den return befehl gibt, aber ich bin mir nicht sicher ob ich das richtig verstanden habe...

    Bsp:

    folgende funktion wird in asuro.c gespeichert
    Code:
    float linie(void){  //deklaration von funktion linie 
    
    float  filter[2];
    int  aR=1, aL=2;
    
    //hier kommt die funktion hin...
    
    return filter[1], aR, aL;
    das hauptprogramm ruft nun die funktion linie auf, und soll nach aufrufen der funktion die werte filter[1], aR, aL überliefert bekommen da diese auch im hauptprogramm, sowie in weiteren funktionen in asuro.c benötigt werden...kann mir jemand ein paar tipps geben??

    vielen dank im vorraus

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2007
    Ort
    Kornwestheim (kWh)
    Beiträge
    1.118
    Hi
    ich bin mir da nicht so sicher, aber wenn du eine Variable als Globale variable deklarierst und dieser dann in der Funktion nen Wert zuordnest, dann kann dein Hauptprogramm diese nach dem ausführen des Unterprogramms benutzen.

    EDIT: du bäuchtest dann halt mehrere globale Variablen.

    Vielleicht hilft dir das weiter:

    http://www.user.tu-berlin.de/looprjb...lektion_5.html


    Ich weis bloß nicht, ob das bei Microcontrolllern so geht.
    Gruß, AlKi

    Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
    ==> UMPROGRAMMIEREN!

    Kubuntu

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Nein, das geht so nicht.

    Wenn Du mehr als einen Wert zurückgeben möchtest, muss Du das in den Übergabeparametern machen, oder das Ganze - sofern es logisch zusammen gehört - in eine Struktur packen.

    Google mal nach C-Tutorials, da steht das meist sehr gut beschrieben drin.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    01.02.2007
    Ort
    Ashausen
    Alter
    65
    Beiträge
    64
    Hi upaucc,

    es gibt für dieses Probem, wie so oft im Leben, mehrer Ansätze:

    1.) Globale Variablen
    Dies ist sicher dei einfachste Möglichkeit. Du definierst die Variablen, auf die Du in Deiner line-Funktion und in main() zugreifen möchtest außerhalb dieser Funktionen. Nachteilig an der Methode ist, dass Du höllisch aufpassen musst, was Deine Funktionen mit solchen Variablen anstellen - denn wenn sie in einer Funktion geänder werden, gilt das auch außerhalb.

    2.) return

    Eine Funktion kann einen Rückgabewert haben. Dabei liegt die Betonung auf EINEN. Natürlich kann das ein Array sein - aber dann gibst Du eingentlich keinen Wert zurück, sondern eine Zeiger.

    und damit sind wir bei
    3.) Du kannst bei den Parametern einer Funktion diese als Wert oder Referenz (einen Zeiger auf die Speicherstelle, in der sich der Wert befindet) übergeben. Mit der zweiten Methode ist es möglich Werte innerhalb der Funktion zu ändern und diese Änderungen nach außen zu geben.

    Dies nur als kleine Anregung. Du wirst aber an einem Programmierkurs in C nicht vorbeikommen. Schau doch mal hier:
    http://www.pronix.de/pronix-608.html

    Gruß,

    _HP_

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    also globale variablen sind die einfachste variante, brauchen allerdings recht viel ram und sind ansonsten absolut verpöhnt.
    anwendung: direkt unter #include... die variable wie üblich deklarieren.

    direkte rückgabe ist dein beispiel schon ganz gut, allerding kann man wie gesagt nur einen wert zurückgeben. zu funktioniert zB PollSwitch(). Funktioniert, geht schnell, ist zwarnicht höchster programmierstil aber wird ganz gern benutzt wenns nur funktionieren soll.

    die hohe kunst in c sind die zeiger (pointer). eigentlich eine variable, in der die adresse einer anderen variable steht. dazu musst du allerdings von vorn nach hinten lesen, die seite vn oben ist nicht schlecht und gut zum verständnis. meld dich wenn du fragen hast.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802

    Re: rückgabe von variablen aus funktionen

    Am besten geht das, indem du deine Daten in einer Struktur zusammenfasst. Falls sich die Daten konzeptionell nicht in einer einzigen Struktur wohlfohlen, kannst du auch mit Pointern arbeiten.

    Code:
    typedef struct
    {
        float  filter;
        int aR;
        int aL;
    } linedata_t;
    
    linedata_t data;
    
    #define FILTER1 12.0
    
    void setLineData (linetata_t * d)
    {
        d->filter = FILTER1;
        d->aR = 1;
        d->aR = 2;
    }
    
    // aufruf
    void foo (void)
    {
        setLineData (& data);
    
        if (data.aR == data.aL)
        ...
    }
    data sollte hier eine globale oder statische (evtl.) lokale Variable sein. data als lokale auto-Variable anzulegen ist nicht so toll auf AVR.
    Disclaimer: none. Sue me.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress