传递多维数组

时间:2010-11-09 04:25:11

标签: c c99

我知道对于一维数组,我可以做...

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 个答案:

答案 0 :(得分:5)

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; 
}

答案 1 :(得分:0)

您需要指定数组的大小:

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

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