我有4个数组,每个数组都有不同数量的条目。所有这些阵列都收集在另一个阵列中。它是这样实现的:
c库中的代码
static const int32_t ONE_COLOR[2] = { RGB_BLACK, RGB_WHITE };
static const int32_t TWO_COLOR[4] = { RGB_WHITE, RGB_RED, RGB_GREEN, RGB_BLUE };
static const int32_t THREE_COLOR[8] = { RGB_BLACK, RGB_RED, RGB_GREEN, RGB_BLUE,
RGB_CYAN, RGB_YELLOW, RGB_MAGENTA, RGB_WHITE };
static const int32_t FOUR_COLOR[16] = { RGB_WHITE, RGB_RED, RGB_GREEN, RGB_BLUE,
RGB_CYAN, RGB_YELLOW, RGB_MAGENTA, RGB_DARK_RED, RGB_DARK_GREEN,
RGB_DARK_BLUE, RGB_LIGHT_BLUE, RGB_LIGHT_GREEN, RGB_ORANGE, RGB_LIME,
RGB_PINK, RGB_LILA };
static const int32_t* COLOR_ARRAY[4] = { ONE_COLOR, TWO_COLOR, THREE_COLOR,
FOUR_COLOR };
我如何访问COLOR_ARRAY [1] [2]? 谢谢你的帮助:)
修改 访问示例代码:
Arduino代码
for (i = 0; i < colorsLen; i++) {
n = 0;
for (j = 0; j < colorsWrite; j++) {
if (bitArray[i * colorsWrite + j] == 1) {
n |= 1 << (colorsWrite - 1 - j);
}
}
colors[i] = COLOR_ARRAY[colorsWrite - 1][n];
// testing access
// colors[i] = ONE_COLOR[n];
// colors[i] = n;
}
colorsLen
是数组colors
的长度,colorsWrite
是可以用一种颜色传输的位数。
目的是通过智能手机的光线传输数据到arduino和背面。为了获得更多带宽,数据用颜色编码。 colorsWrite
定义了传输所有数据的大小colorsLen
。
答案 0 :(得分:0)
好吧,根据您的问题判断,您可以像这样访问COLOR_ARRAY [1] [2]。所以该表达式中的[1]是:TWO_COLOR [],[2]是:RGB_GREEN。所以你可以像访问一样访问数组。
I.e:const COLOR clr = COLOR_ARRAY [1] [2];
我可能会遗漏你问题的某些部分,但我希望它有所帮助或澄清。
此致 的Øyvind
修改强> 这个答案可能会给你一个指针 Defining a static array into a C or C++ source file
答案 1 :(得分:0)
这一行:
n |= 1 << (colorsWrite - 1 - j);
n将至少为1,因为1&lt;&lt; 0 = 1 ...您使用n作为ONE_COLOR[n]
的索引,因此您无法访问索引零处的颜色RGB_BLACK。