Передача многомерного массива - PullRequest
4 голосов
/ 09 ноября 2010

Я знаю, что для одномерных массивов я могу сделать ...

void g(int x[]) {}

void f(int a, int b)
{
    int x[a];
    g(x);
}

Но с таким кодом, как ...

void f(int a, int b)
{
    int x[a][b][4];
    g(x);
}

Как будет выглядеть сигнатура типа g (x)?

Ответы [ 2 ]

5 голосов
/ 09 ноября 2010
void g(int x[][b][4]) // b must be known in advance
{}

В противном случае явно передать b

Например:

void g(int b,int x[][b][4]){ 

} 

int main() 
{ 
    int a=4,b=6; 
    int x[a][b][4]; 
    g(b,x); 
    return 0; 
}
0 голосов
/ 09 ноября 2010

Вам необходимо указать размеры массивов:

void g(int x[][2][3]){ 
    /* stuff */
} 

int main() 
{ 
    int x[1][2][3]; 
    g(x); 
    return 0; 
}
...