如何使用嵌套数组作为函数中的值?

时间:2015-03-13 08:03:03

标签: c

所需行为

我想定义一个数组数组并访问函数中顶级数组的值。

我尝试过什么

例如:

// the array
char* myRGBColorArray[5][3] = { 
    {"0x00,","0x01,","0x02,"},  // i want to use this in a function
    {"0x03,","0x04,","0x05,"}, 
    {"0x06,","0x07,","0x08,"},
    {"0x09,","0x10,","0x11,"},
    {"0x12,","0x13,","0x14,"}
    };

// the function's format
// cursor_set_color_rgb(0xff, 0xff, 0xff);

// ideally i would like to use the indexed values, like this:
cursor_set_color_rgb(myRGBColorArray[0]);
cursor_set_color_rgb(myRGBColorArray[1]);  // etc

C非常新,因此仍然试图了解嵌套数组,访问索引值和定义类型。

问题/ S

  • 上面定义的type的{​​{1}}是否正确?
  • 如何正确访问数组的索引值?

作为参考,我正在玩的函数来自这里的第二个例子 - 它改变了光标的颜色:

https://stackoverflow.com/a/18434383

myRGBColorArray

1 个答案:

答案 0 :(得分:3)

  

上面定义的myRGBColorArray的类型是否正确?

排序-的。在引用字符串文字时,您应该使用const char*而不是char*

但是,从您的底部示例来看,您似乎需要一个unsigned char数组:

unsigned char colors[5][3] = { 
    {0x00, 0x01, 0x02},
    {0x03, 0x04, 0x05}, 
    {0x06, 0x07, 0x08},
    {0x09, 0x10, 0x11},
    {0x12, 0x13, 0x14}
};
  

如何正确访问数组的索引值?

您可以这样编写颜色功能:

void cursor_set_color_rgb(unsigned char color[3]) {
    printf("\e]12;#%.2x%.2x%.2x\a", color[0], color[1], color[2]);
    fflush(stdout);
}

并将颜色设置为数组中的第四种颜色(请记住索引从0开始):

cursor_set_color_rgb(colors[3]);

或者您可以使用原始功能并使用它:

cursor_set_color_rgb(colors[3][0], colors[3][1], colors[3][2]);