C++ mehrdimensionale Arrays und Zeiger übergeben
Martin H.
- programmiertechnik
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
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
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.
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