我有4个数组,每个数组都有不同数量的条目。所有这些阵列都收集在另一个阵列中。它的实现是这样的:访问2D指针阵列
代码在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
应该获得所有数据传输的大小。
''COLOR_ARRAY [1] [2]''有什么问题? – hivert
我试过了,它编译。但是,如果我想在我的arduino上访问它,它会死:(如果我直接访问其中一个数组* * COLOR直接它的工作。 – famalgosner
它是否给出一些错误消息吗?你确定你不走出数组(例如''COLOR_ARRAY [1] [33]'')? – hivert