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

标签 c++ pointers declaration

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

我有一些数据,我正试图将它们组合到一个结构中。大多是内置的数据类型,然后是这两个数组。第一个,

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

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

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

但是还有这个:

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

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

最佳答案

让生活更简单一点,使用 typedef

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

或等效

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

我怀疑你知道以下是什么意思,但只要说它是等价的就足够了

void *(*panelDesc)[4];

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

关于c++ - 声明一个指向 void* 二维数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3788126/

相关文章:

c++ - 如何将 vector <bool>归零?

c++ - 为什么 count 不能为一组 C++ 对象返回正确的值?

c++ - 如何在 C++ 源代码中读取 CMake 变量

c - 处理 typedef 和指针

arrays - 简单但具体的数组编译错误(C)

list - 如何为导入或输出列表的谓词声明 pred?

C++运算符 ">>"重载错误

c - 如何根据字符串长度打印?

带 void 参数的 c 函数

javascript - 在声明对象时将一个对象属性值赋给另一个属性