- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Variablen in Unterprogramm übergeben und mit zurück nehmen ?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.01.2010
    Ort
    Oldenburg
    Alter
    52
    Beiträge
    18

    Variablen in Unterprogramm übergeben und mit zurück nehmen ?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Moin,

    ich möchte eine Variable in ein Unterprogramm "mitnehmen" dort bearbeiten und wieder mit "zurücknehmen" z.b.



    Code:
    int main(void)
    {
      int16_t a;
      int16_t b;
    
      a=53;  
      b=12;
    	
    	while (1) 
    	{	
    	unterprogramm (a,b);  //jetzt Unterprogramm o. Routine aufrufen Variablen a und b "mitnehmen"
    	b++;                            // b um eins erhöhen
            ...
            Jetzt Ausgabe z.b. Display oder so  a & b wobei a nicht hochgezählt wurde
            ...
    	}
    }
    
    void unterprogramm (int a,int b) 
    {
       a++;                                 // a um eins erhöhen
        ... b an dieser Stelle ausgeben funzt einwandfrei ...
       }

    Variable a wird nicht hochgezählt (zumindest kann dies in main nicht
    ausgegeben werden).


    Einrückungen gingen leider verloren, #include .. wurde hier weggelassen.

    Ich hoffe ich konnte mich verständlich ausdrücken.
    mfg. Christoph

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    34
    Beiträge
    607
    Da gibts zwei Möglichkeiten für:

    1) Du gibst den Wert der Variable als Rückgabewert der Funktion zurück (mit return)

    2) Du übergibst nicht eine Variable (die in der Fnktion kopiert wird, um mit der Kopie weiterzuarbeiten) sondern einen pointer auf diese Variable.

    Gruß, Yaro

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    20.01.2010
    Ort
    Oldenburg
    Alter
    52
    Beiträge
    18
    Kurzes Beispiel ?
    mfg. Christoph

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    48
    Beiträge
    1.146
    zu 1)
    Code:
    int mache_was (int x)
    {
    x++;
    return x;
    }
    
    //Aufruf:
    a = mache_was(a);
    Nachteil dieser Methode: Du kannst in einer Funktion nur eine Variable zurückgeben. Arrays als Rückgabewert sind nicht erlaubt.

    zu 2)
    Code:
    void mache_was(int *x, int *y)
    {
    (*x)++;
    (*y)++;
    }
    
    //Aufruf:
    int a, b;
    mache_was(&a,&b);
    Gruß,
    askazo

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    29
    Beiträge
    656
    1. Möglichkeit mit return:

    Code:
    int add(int a, int b)
    {
        return a+b;
    }
    
    void main()
    {
        int a=9; b=15;
        int c = add(a, b); //c = 24
    }
    2. Möglichkeit mit Übergabe der Werte als Referenzen:

    Code:
    int add(int* a, int* b)
    {
        *a = *a + *b; //Hier wird der Wert an Speicheradresse a verändert
    }
    
    void main()
    {
        int a=9; b=15;
        add(&a, &b); //a = 24 (Es wird nicht die Variable, sondern ihre Speicheradresse übergeben)
    }
    mfg
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    29
    Beiträge
    656
    Da war jemand schneller...
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    29.08.2006
    Ort
    Marktrodach
    Alter
    57
    Beiträge
    24
    Wenn Du mehrere Variablen aus der Funktion zurückhaben willst / musst, definier Dir in main() ein struct, übergebe der Funktion dieses Struct als Pointer, in der Funktion kannst Du dann nach Belieben die einzelnen Variablen dieses Structs beschreiben und in main() wieder auslesen.

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    29
    Beiträge
    656
    Wenn es nur ein paar Variablen sind, sind einfache Referenzen sinnvoller.
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    29.08.2006
    Ort
    Marktrodach
    Alter
    57
    Beiträge
    24
    Definitiv nicht. Eine Strukturvariable braucht weniger Speicher, ist wesentlich besser zu lesen und zu handhaben. Warum sollten mehrere getrennte Pointer denn sinnvoller sein???

  10. #10
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    29
    Beiträge
    656
    Strukturen sind sinnvoll, wenn man mehr wie 2 - 3 Variablen hat und diese auch wirklich an mehreren Stellen benutzt. Es ist aber nicht sinnvoll für jede kleine Funktion, der man 2 Variablen übergeben möchte eine Struktur zu erstellen.
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen