Zeiger ( end ergebniss )



  • int *test(int a)
    {
    return a;
    }
    

    ergibt nen super fehler. du definierst dass du einen zeiger auf int zurückgeben wirst und gibst ein int zurück.... nicht gut 😮



  • Wie soll es dann gehen bitte ein besipiel



  • Lightning* schrieb:

    Wie soll es dann gehen bitte ein besipiel

    z.B.

    int* get_address_of(int rhs)
    {
        return &rhs;
    }
    

    gibt die Adresse des Arguments zurück.

    Gruß Caipi



  • Warte doch mal :
    Ergibt denn dass hier auch nicht dass gleiche :

    int get_address_of(int rhs) 
    { 
        return &rhs; 
    }
    

    Ohne den Zeiger kann ich doch auch die adresse übergeben .
    Dass ist doch nicht dass Problem mich interesiert was der indirektionsoperator(*) in der funktion bewerkstelligt .
    Was passiert dort , wenn * steht also

    int* get_address_of(int rhs) 
    { 
        return &rhs; 
    }
    

    Was ist der unterschied zwischen den ersten und dem zweitem .
    Lightning



  • beim ersten Beispiel sagst du du willst ein int zurückgeben und gibst einen pointer auf int zurück --> FEHLER
    Beim zweiten ist alles ( syntaktisch 😉 ) richtig.
    Kurt



  • Lightning* schrieb:

    Ergibt denn dass hier auch nicht dass gleiche :

    int get_address_of(int rhs) 
    { 
        return &rhs; 
    }
    

    Das gibt einen Fehler der Art "invalid conversion from int* to int".

    Lightning* schrieb:

    Was passiert dort , wenn * steht also

    int* get_address_of(int rhs) 
    { 
        return &rhs; 
    }
    

    Das bedeutet einfach, dass die Funktion einen Pointer auf einen Integer zurückgibt. Mit dem kannst du dann weiterarbeiten:

    int foo;
    int* bar = get_address_of(foo);
    std::cout<<bar;
    

    Ich weiß ehrlich gesagt nicht, was daran so schwer zu verstehen ist ;).



  • Wobei euer get_adress_of die Adresse der lokalen Kopie des Aufrufparameters zurückgibt und nicht etwa die Adresse von foo 😉



  • LordJaxom schrieb:

    Wobei euer get_adress_of die Adresse der lokalen Kopie des Aufrufparameters zurückgibt und nicht etwa die Adresse von foo 😉

    Jup. Hab da wohl ein & vergessen... 😮

    es sollte natürlich so aussehen:

    int* get_address_of(int& rhs)
    {
        return &rhs;
    }
    

    Gruß Caipi



  • Jetzt hast du aber glück gehabt dass das nicht das C-Forum ist 😉
    Kurt



  • da soll noch einer sagen, c++ macht keinen spaß 😃


Anmelden zum Antworten