所需行为
我想定义一个数组数组并访问函数中顶级数组的值。
我尝试过什么
例如:
// 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
答案 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]);