Указатель на многомерный массив

Тема в разделе "LANGS.C", создана пользователем BlackParrot, 8 мар 2009.

  1. osox

    osox New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2009
    Сообщения:
    280
    и таг тоже можно
    void show ( void * v , int rows, int cols ) {
    int i, j;
    char ** p = v;
    for ( i = 0; i < rows; i++ ) {
    for ( j = 0; j < cols; j++ )
    printf ( "%s ", *(p + cols * i + j) );
    putchar ( '\n' );
    }
    }

    int main ( void ) {
    char * arr [ 2 ] [ 2 ] = {{"one","two"},{"tree","foo"}};
    char * tix [ 3 ] [ 1 ] = {{"111"},{"222"},{"333"}};
    show ( arr, sizeof arr / sizeof *arr, sizeof *arr / sizeof **arr );
    show ( tix, sizeof tix / sizeof *tix, sizeof *tix / sizeof **tix );
    }
     
  2. osox

    osox New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2009
    Сообщения:
    280
    с99 добавил массивы переменной длинны можно и так
    void show ( int rows, int cols, char * p [ rows ] [ cols ] ) {
    int i, j;
    for ( i = 0; i < rows; i++ ) {
    for ( j = 0; j < cols; j++ )
    printf ( "%s ", p [ i ] [ j ] );
    putchar ( '\n' );
    }
    }
    хотя можно и без них прожить
     
  3. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    BlackParrot
    оффтоп: чувак, твой предыдущий дизасм рулед! :) так держать!