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

时间:2010-09-24 14:37:35

标签: c++ pointers declaration

我无法弄清楚如何声明指向void*数组数组的指针。 (我不能使用STL容器之类的东西,因为它是一个嵌入式系统。)

我有一些数据,我试图在一个结构中组合在一起。主要是内置数据类型,但后来是这两个数组。第一个,

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

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

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

但是那就是这个:

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

我无法想出一种方法来定义我可以将此数组分配给我的结构的成员。由于原始声明中的4,void***不起作用。

2 个答案:

答案 0 :(得分:4)

让生活更简单并使用typedefs

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

或同等的

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

我怀疑你知道以下是什么意思,但足以说明它也是等同的

void *(*panelDesc)[4];

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

答案 1 :(得分:0)

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

void* (*p)[1][4]; //pointer to a two dimensional array of pointers to void
p = &testpanel_pointers;