Über Pointer auf Mehrdimensionales Array zugreifen ?
-
Hi,
wie kann man per Pointer auf ein 2 Dimensionales Array zugreifen ?
Die folgenden Funktion ist vorgegeben:
int matrix_mul(float *m_A, int x_A, int y_A, float* m_B, int x_B, int y_B, float* m_Erg);
Zum testen habe ich jetzt erstmal statische Arrays angelegt:
[/code]
int main(int argc, char *argv[])
{
int test;
float Matr_A[2][3];
float Matr_B[3][2];
float Matr_Ergebnis[2][2];
int size_matA_x, size_matA_y;
int size_matB_x, size_matB_y;size_matA_x = 3;
size_matA_y = 2;size_matB_x = 2;
size_matB_y = 3;Matr_A[0][0] = 1;
Matr_A[0][1] = 2;
Matr_A[0][2] = 3;
Matr_A[1][0] = 4;
Matr_A[1][1] = 5;
Matr_A[1][2] = 6;Matr_B[0][0] = 6;
Matr_B[0][1] = -1;
Matr_B[1][0] = 3;
Matr_B[1][1] = 2;
Matr_B[2][0] = 0;
Matr_B[2][1] = -3;matrix_mul(Matr_A, size_matA_x, size_matA_y, Matr_A, size_matB_x, size_matB_y, Matr_Ergebnis);
system("PAUSE");
return 0;
}
[code]Wie kann ich jetzt in der Funktion matrix_mul auf z.B. Feld ma_A[0][0] zugreifen ?
Gruß Yannic
-
p=Zeiger auf dein Array
x,y=Zielkoordinaten
width=Breite des Arrays*(p+y*width+x)
-
int matrix_mul(float *m_A, int x_A, int y_A, float* m_B, int x_B, int y_B, float* m_Erg) { printf("%d\n", *(m_A + 1)); }
Habs jetzt erstmal mit *(m_A + 1) versucht. Dann sollte ja auf [0][1] gezeigt werden.
Ich erhalte aber immer 0 als Ausgabe.
-
Fehler in der Ausgabe: %d ist für int. Da m_A ein float* ist, benötigst du %f
-
Okay das war blöd komplett übersehen das es sich um float handelt.
Gruß Yannic
-
Mit C99 geht auch:
int matrix_mul(float *m_A, int x_A, int y_A, float* m_B, int x_B, int y_B, float* m_Erg) { float (*a)[x_A]=m_A; printf("%f\n", a[0][1]); }