gpt4 book ai didi

c++ - 在 C++ 中,如何访问多维数组中的值?

转载 作者:行者123 更新时间:2023-11-30 02:01:10 24 4
gpt4 key购买 nike

感谢您的关注!

背景

我正在构建一个四轴飞行器,在其每个臂上都放置了一条 RGB 可寻址 LED。我用的是Arduino来驱动灯,Arduino的代码是C++,我不太了解的语言。

Here is the first StackOverflow question我发布了有关此代码的先前问题的信息。它为您提供了有关我到底想做什么的更多背景信息(如果您有兴趣的话)。

问题

由于对 first question 的回答,我现在已经正确地编写了数组“gpsHoldArr” ,但我无法访问它的值。

在下面的代码中,我调用了 toggleLights(gpsHoldArr[x][y]) 并传入了 gpsHoldArr 的子数组。子数组应该是指向给定 LED 灯条 ([x]) 然后指向给定步骤 ([y]) 的结果。

toggleLights 然后应该迭代传递给它的数组,并将它打开的每个 LED 的值(1-6 中的某个数字)以及该 LED 的红色、绿色和蓝色值发送到控制台.

不幸的是,当我运行下面的代码时,出现了这个错误:无法将参数 1 的 int(*)[3] 转换为 int* 到 'void toggleLights(int*)'

如有任何帮助,我们将不胜感激。

这是当前代码:

//4 arms, 6 steps, 6 leds
int gpsHoldArr[4][6][6][3] = {
{
{{255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}}
},
{
{{255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}}
},
{
{{255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}}
},
{
{{255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {0,0,0}},
{{255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}, {255,0,0}}
}
};

toggleLights(gpsHoldArr[0][0]); //Toggles lights on strip #1, step #1
toggleLights(gpsHoldArr[1][0]); //Toggles lights on strip #2, step #1
toggleLights(gpsHoldArr[2][0]); //Toggles lights on strip #3, step #1
toggleLights(gpsHoldArr[3][0]); //Toggles lights on strip #4, step #1

void toggleLights(int lights[]){
for(int i = 0; i <= 6; ++i)
{
set_color_led(i, lights[i], lights[i], lights[i]);
}
}

void set_color_led(int led, int r, int g, int b){
Serial.println(led); //Which LED (or "pixel") is it?
Serial.println(r); //What is the red value?
Serial.println(g); //What is the green value?
Serial.println(b); //What is the blue value?
}

最佳答案

我可能会这样做,一路上删除一些重复。
(宏技巧只是因为 Arduino - 在桌面上我会使用类而不是数组。)

struct LED { int r, g, b; };

#define BLACK {0, 0, 0}
#define RED {255, 0, 0}

#define DEFAULT_LEDS \
{ {RED, BLACK, BLACK, BLACK, BLACK, BLACK},\
{RED, RED, BLACK, BLACK, BLACK, BLACK},\
{RED, RED, RED, BLACK, BLACK, BLACK},\
{RED, RED, RED, RED, BLACK, BLACK},\
{RED, RED, RED, RED, RED, BLACK},\
{RED, RED, RED, RED, RED, RED}}

LED gpsHoldArr[4][6][6] = {
DEFAULT_LEDS,
DEFAULT_LEDS,
DEFAULT_LEDS,
DEFAULT_LEDS
};


void set_color_led(int index, const LED& led){
Serial.println(index); //Which LED (or "pixel") is it?
Serial.println(led.r); //What is the red value?
Serial.println(led.g); //What is the green value?
Serial.println(led.b); //What is the blue value?
}

void toggleLights(LED (&leds)[6]){
for(int i = 0; i < 6; ++i) // You had a '<=' bug here.
{
set_color_led(i, leds[i]);
}
}

toggleLights(gpsHoldArr[0][0]); //Toggles lights on strip #1, step #1

关于c++ - 在 C++ 中,如何访问多维数组中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14416331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com