Hallo und zwar habe ich folgendes problem ich will ein array ( int a [5] [5] )an ein unter programm übergeben. ich habs mit dem auf ruf
frey ( a [i] [j] ) probiert funzt aber net. ich benutze ms visual 6.0
THX

Hallo und zwar habe ich folgendes problem ich will ein array ( int a [5] [5] )an ein unter programm übergeben. ich habs mit dem auf ruf
frey ( a [i] [j] ) probiert funzt aber net. ich benutze ms visual 6.0
THX
Hallo gustav,
jede Arrayvariable ist ein Zeiger auf den Beginn der für
das Array allozierten Speicherfläche und muss damit
als solcher an Funktionen übergeben werden.
Bei mehrdimensionalen Arrays müssen entsprechend mehrdimensionale
Zeiger (PointerPointer) übergeben werden.
Die aufgerufene Funktion muss entweder bereits
zur Programmierzeit (compiletime) wissen,
wie das Array dimensioniert ist,
oder Du übergibst die Dimensionen als zusätzliche int Parameter.
Hier ein quickanddirty Beispiel,
Fehler sind durchaus möglich ....
void subrout(int **);
void subrout2(int **,int,int);
void aufrufer()
{
int a[5][5];
// Werte füllen ......
subrout(a);
subrout2(a,5,5);
}
void subrout(int **a)
{
int i,ii
for(i=0;i {
for(ii=0;i {
// tuwas
}
}
}
void subrout2(int **a,int b,int c)
{
int i,ii
for(i=0;i {
for(ii=0;i {
// tuwas
}
}
}
Sorry, die subrout2 kam nicht richtig durch...
void subrout2(int **a,int b,int c)
{
int i,ii
for(i=0;i {
for(ii=0;i {
// tuwas
}
}
}
ok danke ich werde es mal probieren
In der aufgerufenen funktion muss der array parameter genau so definiert werden, wie das array (der erste index darf auch leer sein).
Also bei
int a[5][5];
void func(int a[][5]);
void func(int a[5][5]);
a[5][10][20][30];
a[i][j][k][l];
a[i*10*20*30+j*20*30+k*30+l]
int a[5][5];//kann auch local in z.b. main() sein und darf auch beliebig heißen.
void func(int a[][5], int i0, int j0){//a willkürlich gewählt
int i, j;
for(i=0;i for(j=0;j if(i==i0 && j==j0)
printf("%d\t", -a[i][j]);
else
printf("%d\t", a[i][j]);
}
printf("\n");
}
printf("Ende.\n");
}
int main(int argc, char* argv[]){
int i, j;
for(i=0;i for(j=0;j a[i][j]=10*i+j;
}
}
func(a, 1, 2);
return 0;
}