【发布时间】:2014-05-27 14:50:36
【问题描述】:
我的目标是拥有一个结构,其中包含指向无符号字符的二维数组的指针及其宽度和高度,以便我可以正确地从中检索数据。
#include <stdio.h>
struct wrapper {
unsigned short width;
unsigned short height;
unsigned char ***data;
};
inline unsigned char retrieveValue(struct wrapper *wrapper, unsigned short x, unsigned short y) {
typedef unsigned char (*myCast)[wrapper->height][wrapper->width];
return (unsigned char)((*(myCast)(wrapper->data))[y][x]);
}
unsigned char testWrapperData[2][2] = { {0, 1}, {2, 3} };
struct wrapper wrapper = {
2,
2,
(unsigned char ***)testWrapperData,
};
int main(void) {
printf("%d", retrieveValue(&wrapper, 1, 0));
return 1;
}
这是我目前正在使用的,它可以工作,但我很确定我做错了一些事情(不确定它是否应该只是 unsigned char ** 而不是 unsigned char * )。
我还想删除 myCast 的 typedef 以便我可以将所有内容放在一行中。
【问题讨论】:
-
你可以拥有你想要的,但初始化会有所不同。
-
我的初始化有什么问题?
-
你有不兼容的类型。
标签: c arrays pointers multidimensional-array