Mehrdimensionales Array an Funktion übergeben



  • Hi,

    wie der Titel schon sagt möchte ich ein Mehrdimensionales Array an eine Funktion übergeben. Ich hab es schon per Referenz versucht (die einzige Möglichkeit die ich kenne 🙄 ) aber da kommt bei folgendem Code:

    void Testfunktion(int &iArray[8])
    {
    
    }
    

    folgender Fehler

    '<unbekannt>' : Fleder aus Verweisen sind unzulässig
    

    was mache ich falsch? Gibt es überhaupt eine möglichkeit Statische merdimensionale Arrays zu üpbergeben?



  • Wurde schon x mal behandelt.

    übergib lieber z.B.

    void Testfunktion(int* iArray, int size)
    {
    
    }
    

    Edit: Ach ja, mehrdimensional, dann übergib

    void Testfunktion(int* iArray, int sizex, sizey)
    


  • Chris++ schrieb:

    void Testfunktion(int &iArray[8])
    {
    
    }
    

    folgender Fehler

    '<unbekannt>' : Fleder aus Verweisen sind unzulässig
    

    Das ist ja auch ein Feld von Referenzen. Du meintest wahrscheinlich (&iArray)[8] -- das ist aber dann nur eine Referenz auf ein 1D-Array mit 8 Elementen.

    was mache ich falsch? Gibt es überhaupt eine möglichkeit Statische merdimensionale Arrays zu üpbergeben?

    void test(int array[8][8]);
    void test(int array[][8]);
    void test(int (*array)[8]);
    

    alles dasselbe (Achtung, das ist nur in Funktionsparametern dasselbe). Die erste Dimension kann weggelassen werden, die anderen sind notwendig.





  • Bashar schrieb:

    Das ist ja auch ein Feld von Referenzen. Du meintest wahrscheinlich (&iArray)[8] -- das ist aber dann nur eine Referenz auf ein 1D-Array mit 8 Elementen.
    Arrays zu üpbergeben?

    void test(int array[8][8]);
    void test(int array[][8]);
    void test(int (*array)[8]);
    

    [/quote]

    Das ist genau das was ich brauche. Ich dachte man kann/sollte Arrays nur per Referenz übergeben (ist ja auch schneller). Das das so

    void test(int array[8][8]);
    

    hätte ich jetzt nicht gedacht... 🙂



  • Chris++ schrieb:

    Das ist genau das was ich brauche. Ich dachte man kann/sollte Arrays nur per Referenz übergeben (ist ja auch schneller)

    Ja schon, der Witz ist, dass man Arrays überhaupt nicht per Wert übergeben KANN. Die obigen drei Möglichkeiten übergeben sämtlich nur einen Pointer auf das erste Element des Arrays.


Anmelden zum Antworten