0

我有四个包含一些值的数组。另一个数组应该包含所有这四个数组,如代码所示:

static const long ONE_COLOR[2] = { RGB_BLACK, RGB_WHITE };
static const long TWO_COLOR[4] = { RGB_WHITE, RGB_RED, RGB_GREEN, RGB_BLUE };
static const long THREE_COLOR[8] = { RGB_BLACK, RGB_RED, RGB_GREEN, RGB_BLUE,
    RGB_CYAN, RGB_YELLOW, RGB_MAGENTA, RGB_WHITE };
static const long 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 };

//this array should contain all other arrays
static const long COLOR_ARRAY = {ONE_COLOR,TWO_COLOR, THREE_COLOR,
    FOUR_COLOR };

我的问题是访问数组中的值。我以为我可以收到RGB_BLACKwith的价值COLOR_ARRAY[0][0]。我尝试了一些指针结构,但它也不起作用:(

4

4 回答 4

4

听起来您想要一个指向数组的指针数组。

static const long *const COLOR_ARRAY[4] = {
    ONE_COLOR, TWO_COLOR, THREE_COLOR, FOUR_COLOR
};

两者const都推荐:第一个const意味着这是一个指向常量数组的指针,第二个const意味着这个指针数组本身就是常量。

您可以按照自己的想法访问元素COLOR_ARRAY[1][3] == RGB_BLUE,等等。

笔记

我对术语有点草率。您实际上并没有获得指向数组的指针,而是指向每个数组中第一个元素的指针。对于大多数操作,在 C 中,数组和指向第一个元素的指针是可以互换的。

于 2013-05-09T23:41:43.397 回答
0

也许你的意思是

static const long COLOR_ARRAY[] = {ONE_COLOR,TWO_COLOR, THREE_COLOR, FOUR_COLOR };

[]的版本中没有。

于 2013-05-09T23:40:42.743 回答
0

你可以像这样定义 COLOR_ARRAY :

static const long* COLOR_ARRAY[4] = {ONE_COLOR,TWO_COLOR, 
                                     THREE_COLOR,FOUR_COLOR };

现在您应该可以使用:

COLOR_ARRAY[0][0]
于 2013-05-09T23:41:08.230 回答
-1

您可以像这样组合数组:

first[3] = { 11, 17, 23 };
second[3] = { 46, 68, 82 };

combo[2][3] = {
         { 11, 17, 23 },{ 46, 68, 82 }};

我无耻地从这里复制了这个例子: http ://rapidpurple.com/blog/tutorials/c-tutorials/programming-in-c-array-of-arrays/

一探究竟!

最好的问候-汤姆

于 2013-05-09T23:45:38.833 回答