代码之家  ›  专栏  ›  技术社区  ›  Clark Gaebel

传递多维数组

c99 c
  •  4
  • Clark Gaebel  · 技术社区  · 14 年前

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

    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 回复  |  直到 14 年前
        1
  •  5
  •   Prasoon Saurav    14 年前
    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; 
    }
    
        2
  •  0
  •   Brian Clements    14 年前

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