[英]declaring a pointer to a two dimension array of void*
我在弄清楚如何声明一个指向void*
数组的指针时遇到麻烦。 (我不能使用STL容器之类的东西,因为它是嵌入式系统。)
我有一些数据试图组合到一个结构中。 大多数是内置数据类型,但是这两个是数组。 第一个,
char *testpanel_desc[] = {...};
没问题。 在我的结构中,我像这样存储指向此数组的指针:
struct MyStruct
{
...
char** panelDesc;
};
但是,这是一个:
void *testpanel_pointers[][4] = {...};
而且我想不出一种方法来定义可以分配此数组的结构成员。 由于原始声明中的4, void***
不起作用。
简化生活并使用typedef
identity<void*[4]>::type *panelDesc;
或同等学历
typedef void *type[4];
type *panelDesc;
我怀疑您知道以下是什么意思,但足以说它也是等效的
void *(*panelDesc)[4];
请注意,基于类型,它不是“指向void *的二维数组的指针”,就像char**
不是“指向char *的一维数组的指针”一样。 但是在一维情况(指向第一个元素)中保持您的操作方式,这是您需要的声明。
void *testpanel_pointers[1][4] = {};
void* (*p)[1][4]; //pointer to a two dimensional array of pointers to void
p = &testpanel_pointers;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.