繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM