Pointer auf Array mit Pointern als Rückgabewert einer C-Funktion?



  • Hallo liebes Forum,

    Ist es moeglich, in C einen Pointer auf ein Array mit Pointern (z.B. Pointer auf int-Werte) als Funktions-Rueckgabewert zu deklarieren?

    - Falls ja, wie sieht die entsprechende Syntax insbesondere im Funktionskopf aus?

    - Falls nein, wie würde man "am besten" verfahren, wenn man bspw. in einer Funktion drei Listen erstellt, um sie zurückzugeben? Gibt es dann nur die Moeglichkeit, mit einer void-Funktion ueber Call-By-Reference die entsprechenden Listen zu uebergeben/veraendern?

    Was ich brauche, soll das folgende Code-Fragment andeuten, wobei ich nicht weiss, was bei <syntax?> stehen muss:

    <syntax?> funktion () {
        int *(*pap)[];
        ...
        // Hier werden z.B. die drei o.g. Listen erstellt
        ...
        return pap;
      }
    
      int main ()
      {
        ...
        int *(*pap)[] = funktion();
        ...
      }
    

    Im Voraus bereits vielen Dank für einen hilfreichen Hinweis!! 🙂



  • 1. Bestimmt geht das, allerdings eher mit Doppel- und Dreifachpointern (die jeweils auf den Anfang eines Arrays zeigen können).

    2. Ich würde die STL-Container dafür nutzen - und verschachtelte vector'en übergeben.



  • Es ginge z.B. so:

    int** foo() {
        int **p;
        p = new int*[10];
        for(int i=0; i < 10; i++) {
            p[i] = new int[5];
            for(int j=0; j < 5; j++)
                p[i][j] = i+j;
        }
        return p;
    }
    

    oder (wie schon gesagt) mit einer Funktion mit folgender Signatur und folgendem Rückgabewert:

    vector<vector<int> > foo2();
    

Anmelden zum Antworten