Martin H.: C++ mehrdimensionale Arrays und Zeiger übergeben

hallo,

ein zeiger für mehrdimensionale arrays zieht z.b. so aus:

int tabelle[5][6];
int *zeiger1, **zeiger2;

zeiger1=tabelle; // [5]
zeiger2=tabelle[0]; // [6]

// und wie kann ich diesen für eine funktion übergeben?
// bei mir treten bei folgendem beispiel fehler auf:

void Table(int *tabledata1, int **tabledata2){
             //irgendwas...
}

// mit dem funktionsaufruf

Table(zeiger1, zeiger2);

// oder

Table(tabelle, tabelle[0]);

// der fehler: "no matching function..." (dev c++ 4, windows)

kann mir jemand helfen?
danke

  1. Hallo Martin H.,

    schon lange her, aber ich versuch es mal:

      
    void fill_tab(int **tab, int ni, int nj)  
    {  
      int i,j;  
        for(i=0;i<ni;i++)  
          for(j=0;j<nj;j++)  
            tab[i][j]=1000*ni+nj;  
    }  
      
    ...  
      
      int tabelle[5][6];  
      
        fill_tab(tabelle,5,6);  
    
    

    Das ist jetzt nicht getestet, aber im Prinzip musst Du dem Unterprogramm neben der Startadresse des Arrays nur mitgeben wieviele Zeilen und Spalten Dein Array hat.

    Gruß, Jürgen

    1. mhhh ja danke, das ist eine möglichkeit.
      ich wollte jedoch eine automatisierung was spalten und zeilenanzahl angeht. aber leider is die spache in der form sehr beschränkt.

      auch mit sizeof(); lässt sich nich viel machen, wenn es nicht um int geht.

      danke trotzdem für die antwort.

      1. Hallo Martin

        ich wollte jedoch eine automatisierung was spalten und zeilenanzahl angeht. aber leider is die spache in der form sehr beschränkt.

        ist sie nicht, wenn Du C++ verwendest. Du suchst den Container 'vector' der Standardbibliothek von C++.

        In C hingegen musst Du Dich um die Speicherverwaltung bei so etwas selbst kümmern, d.h. eine Erweiterung ist nichttrivial.

        Freundliche Grüße

        Vinzenz