代码之家  ›  专栏  ›  技术社区  ›  dandan78 Tom Cool

声明指向void的二维数组的指针*

  •  2
  • dandan78 Tom Cool  · 技术社区  · 14 年前

    void* . (我不能使用STL容器之类的,因为它是嵌入式系统。)

    char *testpanel_desc[] = {...};
    

    不是问题。在我的结构中,我存储一个指向这个数组的指针,如下所示:

    struct MyStruct
    {
        ...
        char** panelDesc;
    };
    

     void *testpanel_pointers[][4] = {...};
    

    我想不出一个方法来定义我的结构中的一个成员,我可以把这个数组分配给它。 void*** 不起作用是因为原始声明中的4。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Johannes Schaub - litb    14 年前

    让生活简单一点,使用typedefs

    identity<void*[4]>::type *panelDesc;
    

    或同等产品

    typedef void *type[4];
    type *panelDesc;
    

    我怀疑你是否知道下面的意思,但也可以说它是等价的

    void *(*panelDesc)[4];
    

    请注意,基于类型,它不是“指向void*的二维数组的指针”,与 char** 不是“指向char*的一维数组的指针”。但是保持一维情况下的方式(指向第一个元素),这就是您需要的声明。

        2
  •  0
  •   Prasoon Saurav    14 年前
    void *testpanel_pointers[1][4] = {};
    
    void* (*p)[1][4]; //pointer to a two dimensional array of pointers to void
    p = &testpanel_pointers;