Mehrdimensionales Array als Parameter



  • Moin alle zusammen,
    hab ein kleines Problem mit der Übergabe eines mehrdimensionalen Arrays.
    Und zwar soll ein Array ( test[16][16] ) an den Konstruktor einer Klasse
    übergeben werden. Da ja sowieso nur ein Zeiger übergeben wird, ist in der
    Klasse ein Zeiger dem der übergeben zugeordnet wird.
    So nun zu meinem Problem, ich hab gelesen die Übergabe eines mehrdim. Array
    sollte so aussehn, (*test)[16] , fedoch funzt das schon bei mir nicht.
    Jemand nen guten Tip???
    Und dann würde ich gern noch wissen ob ich das Array dann normal über zwei
    Laufvariablen ansprechen kann??
    Danke schonmal für jegliche Hilfe.
    Gruss
    Storm



  • probiers mal mit **test



  • Funzt leider auch nich...



  • void f(int a[10][10])
    {
    }
    
    int main()
    {
        int array[10][10];  
        f(array);
    }
    

    warum sollte das nicht funktionieren? 😮



  • Die Größe der zweiten Dimension muss angegeben werden, da es ansonsten innerhalb der Funktion nicht möglich ist, die korrekte Speicherstelle zu ermitteln. Beispielsweise ist a[1][1] in unserem Beispiel die sechste Position. Wäre die zweite Dimension aber zehn, dann wäre a[1][1] die zwölfte Stelle. Im Fall eines zweidimensionalen Arrays wird die zweite Dimension auch vom Compiler geprüft. Der Aufruf einer dieser Funktionen mit einem Array, das als b[5][3] definiert wurde, wird vom Compiler entdeckt und verhindert. Die Klammern um *a sind bei fc erforderlich, da der Parameter ansonsten nicht als zweidimensionales Integer-Array interpretiert wird, sondern als ein eindimensionales Array von Zeigern auf Integer.

    Hab ich von ner Webseite C++ Programmierung
    Habs auch probiert wie du es geschrieben hast und es funzt leider nich



  • storm_42 schrieb:

    Habs auch probiert wie du es geschrieben hast und es funzt leider nich

    Fuer mich sieht der Code zunaechst gut aus. Was ist denn die Fehlermeldung ("funzt leider nicht" mag "cool" klingen, entbehrt aber einer gewissen Praezision)?



  • #include <iostream>
    
    void f(int a[10][10])
    {
        for(int i=0; i<10; i++)
            for(int j=0; j<10; j++)
                std::cout <<a[i][j] << std::endl;
    }
    
    int main()
    {
        int array[10][10];  
        for(int i=0; i<10; i++)
            for(int j=0; j<10; j++)
                array[i][j] = i*j;
        f(array);
    }
    

    das funktioniert bestens. 🤡



  • Hab den Fehler gefunden, es funktioniert nicht ein statisch erzeugtes Array an den Konstruktor zu übergeben und dann damit zu arbeiten. Muss alles mit Zeigern machen.
    Danke trotzdem für die Hilfe.


Anmelden zum Antworten