Größe eines 2 dimensionalen Array bestimmen



  • Hallo,

    Wie kann ich die Feldgrößen eines 2 dimensionalen Arrays z.B.: int test[20][20] bestimmen. Ich kenne zwar die sizeof funktion, aber ich weiß nur, wie man diese auf eindimensionale Felder anwendent.

    Danke für Eure Hilfe.

    mfG
    Martin



  • Die größe eines Feldes ist die größe des Typs, in deinem Fall int



  • und wie weiß ich, ob es sich um ein Array von [20][20] handelt. Ich weiß ja nur, dass es 400 Elemente sind.



  • Wenn du weißt, dass es ein Array aus 400 Integern ist, dann geht das so:

    int array[20][20];
    int **pp = &array;

    // Auf Element 25 zugreifen
    pp[5][5] = 12;

    // oder
    (pp+55) = 12;

    // oder
    pp[5*5] = 12;



  • @Martin
    Wenn du schon angibst, dass es ein Array [20][20] ist, dann weißt du doch auch, dass es so ist, oder?? Du hast eine feste Größe und diese verwendest du da ja auch. Warum möchtest du dann die Größe noch "dynamisch" ermitteln?



  • Es gibt noch eine Möglichkeit, wenn du die Größe nicht kennst, aber die Anzahl
    der Elemente:

    void tolle_func (void *p, size_t size, size_t elements)
    {
        char *data_pointer = p;
        // Auf Element 10 zugreifen
        data_pointer[size*9];
    }
    

    Dies setzt aber auch voraus, dass du die Elemente kennst, du kannst hier jetzt zwar
    zu jedem Element gehen da du die Größe in Bytes kennst (steht in size), aber
    du kennst ja nicht den Aufbau der Struktur, oder um was für ein Typ es sich handelt.



  • So?

    int arr[30][20];
    
    const int cols = sizeof(arr[0]) / sizeof(int); // => 20
    const int rows = sizeof(arr) / sizeof(arr[0]); // => 30
    

    Alle Konstanten muessen natuerlich zur Compile-Zeit bekannt sein..


Anmelden zum Antworten