我无法弄清楚如何声明指向void*
数组数组的指针。 (我不能使用STL容器之类的东西,因为它是一个嵌入式系统。)
我有一些数据,我试图在一个结构中组合在一起。主要是内置数据类型,但后来是这两个数组。第一个,
char *testpanel_desc[] = {...};
不是问题。在我的结构中,我存储了一个指向这个数组的指针,如下所示:
struct MyStruct
{
...
char** panelDesc;
};
但是那就是这个:
void *testpanel_pointers[][4] = {...};
我无法想出一种方法来定义我可以将此数组分配给我的结构的成员。由于原始声明中的4,void***
不起作用。
答案 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;