Ü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]);
    }
    

Anmelden zum Antworten