我有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