2D Array zurückgeben



  • Hi!

    Habe ein großes Problem beim Zurückgeben von 2D Arrays! 😞
    Hab schon fast alles ausprobiert, und es klappt nicht.

    /*Hier das Problem*/
    char** foo(char acFeld[][20])
    {
      acFeld[10][10] = 'C';
      return acFeld;
    }
    
    int main(int argc, char* argv[])
    {
      char acFeld[20][20];
      acFeld = foo(acFeld);
      return EXIT_SUCCESS;
    }
    

    char** funktioniert nicht!!!
    Wie soll ich das anders machen (das es funktioniert) 😕

    Danke im voraus!
    lg
    DaVinci



  • nicht zurueckgeben. das array wird bereits manipuliert.

    also so:

    /*Hier das Problem*/
    void foo(char acFeld[][20])
    {
      acFeld[10][10] = 'C';
    }
    
    int main(int argc, char *argv[]) /* ist geschmackssache aber der stern passt mehr zur variable als zum typ. beispiel: int a, *b; */
    {
      char acFeld[20][20];
      foo(acFeld);
      return EXIT_SUCCESS; /* 0 ist hier wohl gebraeuchlicher als dieses lustige define */
    }
    


  • Die Umwandlung Array->Pointer funktioniert nur auf äußerster Ebene. D.h. du müßtest einen char*[20] zurückgeben (ich weiß nicht, ob das funktioniert). Aber bei Arrays ist es sowieso besser, die vor Ort zu verändern - die werden standardmäßig per Referenz übergeben, also wird sich die Anweisung "acFeld[10][10]='C'; direkt auf dein übergebenes Feld wirksam.


Anmelden zum Antworten