Funktion mit zwei Rückgabewerten



  • Hallo,

    gibt es eine Möglichkeit das eine Funktion einen bool und einen char Wert
    zurückgibt.



  • // Variante 1
    struct Foo {
        bool bar1;
        char bar2;
    }
    
    struct Foo func( /* ... */)
    {
        /* ... */
    }
    
    /* Variante 2 */
    void func(bool * bar1, char * bar2, /* ... */)
    {
        /* ... */
        *bar1 = something;
        *bar2 = something_else;
    }
    

    mfg



  • whoooooooops

    merk grad in c gibt es kein bool? Meinst du C++ dann hier:

    /* Variante 3 */
    void func(bool& bar1, char& bar2)
    {
        bar1 = something;
        bar2 = somtehing_else;
    }
    

    Wobei Variante 1 + 2 auch noch geht.

    Aufrufe sehen so aus

    /* für Variante 1 */
    struct Foo foo;
    foo = func( /* ... */ );
    /* für Variante 2 */
    bool bar1;
    char bar2;
    func(&bar1, &bar2, /* ... */ );
    /* für Variante 3 */
    bool bar1;
    char bar2;
    func(bar1, bar2, /* ... */ );
    

    mfg



  • Ich meine natürlich bit und char.

    Ich möchte keine Zeiger übergeben.

    Aber ich denke mal, das es so nicht Funktioniert.

    if(!read_uart()) //Hier auf das bit testen
    {
    Fehler;
    }
    else
    {
    Daten auswerten;
    }
    /////////////////////////////////////////////////////
    bit char read_uart(void)
    {
    timer starten;
    warten auf Empfang der RS232 Schnittstelle oder Timer abgelaufen.

    Timer abgelaufen dann bit = 0;

    Daten emfpangen dann bit = 1 char = daten;
    }



  • Wenn ich mich nicht irre, kann der Rückgabewert einer Funktion nur "EIN Einfacher Datentyp" sein.
    Das bedeutet:
    > kein Array
    > kein Structure

    Jedoch kann man das gewünschte Ergebnis mit Ein-/Ausgabeparamtern erzielen
    (wurde schon gesagt)

    PS.: auch ein Pointer kann ein Rückgabewert sein!



  • Hallo,

    du irrst:

    chille07 schrieb:

    Das bedeutet:
    > kein Array
    > kein Structure

    selbstverständlich darf eine Funktion u.a. auch ein struct zurückgeben.

    MfG



  • Das glaube ich kaum.

    in ein Structure kann man ja auch arrays und so weiter schreiben
    sprich...

    typedef struct
    {
        int x[20];
        int y[20];
    }koor;
    
    koor lese()
    {
        ...
    }
    
    void main()
    {
        koor a;
        a=lese;
    }
    

    Ich habs zwar nicht getestet, oba warum hättn mir sunst das mit die Ein-Ausgabeparameter gemacht, wenns einfacher geht?



  • chille07 schrieb:

    Ich habs zwar nicht getestet, oba warum hättn mir sunst das mit die Ein-Ausgabeparameter gemacht, wenns einfacher geht?

    Was sind Ein-Ausgabeparameter?
    Meinst du In/Out Parameter? Die gibt es so in C nicht. Man hat nur Zeiger - ein Zeiger kann aber entweder In oder Out oder In/Out sein...

    Und warum sollte man verbieten structs zurück zu geben? Das verstehe ich nicht...



  • chille07 schrieb:

    Das glaube ich kaum.

    du sollst nicht glauben, sondern wissen, oder wenigstens ausprobieren, bevor diese Möglichkeit hier als Lösung überhaupt nicht angesprochen wird.

    chille07 schrieb:

    Ich habs zwar nicht getestet, oba warum hättn mir sunst das mit die Ein-Ausgabeparameter gemacht, wenns einfacher geht?

    weil du (und auch andere vielleicht) offensichtlich nicht wußtest, daß man structs zurückgeben kann.

    MfG



  • Wir, das heisst meine Klasse, haben 4 Stunden programmiern pro Woche, nächstes Schuljahr 10 Stunden.
    Ich weiß eigendlich nicht was wir lernen C oder C++
    zB.: Dateiname der Quellcodes: cpp
    andererseits verwenden wir kein cout, cin

    Ich glaube wir lernen eine Mischung aus beiden?

    Mit ein/Ausgabeparametern meine ich:

    void asdf(int *x,int *y,int *z)
    {
    }
    Sprich, die Funktion kann die Variablen verändern und darauf zugreifen.


Anmelden zum Antworten