wie gibt man aus funktionen einen pointer zurückgeben



  • sagt eigentlich schon alles



  • mit

    return
    


  • ein Zeiger ist auch nur eine Variable...

    wenn du
    char foo() { return 'c'; }
    schreibst um einen char zu returnen, dann schreibst du auch
    char* foo() { return "agugu"; }
    um einen Zeiger zu returnen 😉

    Aber Achtung:

    char* foo()
    {
      char buf[]="hallo Welt";
      return buf;
    }
    

    ist boese, weil buf beim return zerstoert wird un foo somit die adresse eines ungueltigen (weil bereits zerstoerten) char arrays zurueckgibt.



  • danke das ging schnell...

    genau das zweite ist mein problem

    ich hab ein int string als rückgabe wert und möchte den gerne in der (übergeordnet?) auslesen.
    ich dachte mir nun man deklariert die erzeuger funktion als pointer, somit dürfte ja der rückgabe wert ein pointer sein.... nur wie macht man das oder geht das gar nicht ??

    danke



  • na mal sehen wie ich sowas lösen kann..

    muss wohl ne neue fkt schreiben
    grummel c ist wohl nicht c++, wie ich vermute...



  • Ja, C ist nicht C++
    Das aendert an deinem Problem aber nix (ausser dass du es in C++ mit smart pointer loesen koenntest)

    void foo(char* buffer)
    {
      strcpy(buffer,"A Gu Gu");
    }
    

    so loest man es in C 😉

    der caller muss nur genug speicher bereitstellen...



  • Du must di variable zu einer globalen machen.
    Allerdings kannst du sie auch als 'static' deklarieren. Dann wird die lokale Var. techn. gesehen zu einer Globalen, aber du hast 'nur' Zugriff wie auf normale lokale Variablen.

    mfg
    -bg-



  • Du must di variable zu einer globalen machen.

    Schon mal in einem Team gearbeitet ??? Also an deinen Programmen
    möchte ich nichts verändern.....
    Globale Variabeln sind für das genannte Problem keine Lösung!

    Allerdings kannst du sie auch als 'static' deklarieren

    Für gewisse Probleme schaffen "static" sicher Hilfe.. aber sicher nicht
    für das oben genannte!!!!
    Das ist Bastlerei... keine Programmierung.

    Bitte Shades Lösung ..... aber sicher nicht static und schon gar nicht global...



  • Original erstellt von Solaris'dUKe:
    aber sicher nicht static und schon gar nicht global...

    Jep!
    static ist dann boese, wenn du mal Threads verwendest und global ist sowieso 'verboten'.


Anmelden zum Antworten