Как назначить многомерный массив во временную переменную?

Я хочу назначить статически выделенный многомерный массив временной переменной. Рассмотрим следующий пример:

void foo(int b[3][2])
{
    b[1][1] = 1; // no segmentation fault
}

int main()
{
    int a[3][2] = {{1, 2}, {11, 12}, {21, 22}};

    foo(a);

    int** c;
    c = (int**)&a;
    c[1][1] = 1; // segmentation fault on execution

    int* d[3];
    d[0] = (int*)&(a[0]);
    d[1] = (int*)&(a[1]);
    d[2] = (int*)&(a[2]);
    d[1][1] = 1; // no segmentation fault

    return 0;
}

В основном я хочу сделать что компилятор делает с параметром b из foo () . Но единственное рабочее решение, которое я мог придумать, это d . Есть ли не менее сложный способ ?

7
задан John Humphreys - w00te 21 November 2011 в 15:34
поделиться