我的目标是有一个结构,它包含一个指向无符号字符的二维数组的指针,以及它的宽度和高度,以便我可以正确地从中检索数据。二维数组的包装
#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;
}
这是我目前使用的,它的工作原理,但我敢肯定,我做错了一些事情(不知道是否应该仅仅是无符号的char **,而不是无符号的字符*) 。
另外我想删除myCast的typedef,这样我就可以把它全部放在一行上。
你可以拥有你想要的,但初始化会有所不同。 – this
我的初始化有什么问题? – Jimmay
您有不兼容的类型。 – this