Zeiger auf Array als rückgabeparameter



  • Ich schreibe eine Funktion, die einen pointer auf ein float[5] zurückgeben soll.
    Doch beim kompilieren wird mir

    error C2090: Funktionsergebnis ist ein Array

    angezeigt. Wie kann ich das lösen? Hier der Funktionskopf

    float (*sortbydist)(float* frompoint, float x, int dim1)[5]
    

    Danke



  • Erzeuge an der aufrufenden Stelle dein float-Array, dass du per Referenz/Pointer an deine Funktion übergibst und dort füllst.


  • Mod

    @_matze: Wenn es C ist, dann geht nichts mit Refrenzen.

    Wenn Du einen Zeiger zurückgeben möchtest
    - als Argument musst Du einen Zeiger auf einen Zeiger deklarieren float** ppMyResult
    - Ansonsten den Rückgabewert der Funktion nuutzen: float *MyFunc(...);



  • Martin Richter schrieb:

    @_matze: Wenn es C ist, dann geht nichts mit Refrenzen.

    Klar, stimmt. Von C war ja auch nicht die Rede...

    Martin Richter schrieb:

    - Ansonsten den Rückgabewert der Funktion nuutzen: float *MyFunc(...);

    Sollte man da nicht noch erwähnen, dass er Probleme bekommen kann, wenn er lokal in seiner Funktion ein nicht-static float-Array bastelt und einen Zeiger auf das Array zurückgibt, dass mit dem Funktionsende seine Gültigkeit verliert?


  • Mod

    _matze schrieb:

    Sollte man da nicht noch erwähnen, dass er Probleme bekommen kann, wenn er lokal in seiner Funktion ein nicht-static float-Array bastelt und einen Zeiger auf das Array zurückgibt, dass mit dem Funktionsende seine Gültigkeit verliert?

    Sollte man! 🤡



  • Danke


Anmelden zum Antworten