【发布时间】:2014-08-10 21:07:39
【问题描述】:
我们有以下两个静态定义的字节数组...
unsigned char pixelBuffer1[32][6] = {/**/};
unsigned char pixelBuffer2[32][6] = {/**/};
我们想将当前缓冲区存储在一个变量中,但我们不确定如何声明它。这就是我们想要做的......
[SOMETYPE] activePixelBuffer;
activeBufferId == getOneOrTwoBasedOnSomeLogic();
activePixelBuffer = (activeBufferId == 1)
? pixelBuffer1
: pixelBuffer2;
activePixelBuffer[17][4] = x;
activeBufferId == getOneOrTwoBasedOnSomeLogic();
activePixelBuffer = (activeBufferId == 1)
? pixelBuffer1
: pixelBuffer2;
activePixelBuffer[23][2] = y;
(请注意,我们在整个代码中重新分配了 activePixelBuffer 的值)
但是,我们不确定要为 [SOMETYPE] 输入什么
我知道如果我们将 pixelBuffer1 或 pixelBuffer2 传递给一个函数,我们会这样定义它...
void someFunc(unsigned char (&myArray)[32][6])
{
...
}
...但这似乎不适用于局部变量声明类型。此外,这迫使我们对尺寸进行硬编码,这是可以的,但最好不必这样做。
我们也尝试过使用指针,但数组的二维方面也让我们望而却步。
那么我们使用什么类型呢?
【问题讨论】:
-
unsigned char **myArray应该可以工作。 -
使用
typedef- 这样的事情会让生活变得更轻松。 -
@LeventeKurusa:不 - 它真的不起作用 -
char **不等于char[][]。 -
unsigned char (&myArray)[32][6]这不是C++语法吗? -
嗯,是的,我不知何故认为它们是字符串...@MarquelV:您也可以尝试将其设为
unsigned char *myArray,然后使用 myArray[x + y*WIDTH] 访问它