临时变量未从数组中分配正确的值

Temp variable not assigning right value from array

我正在 arduino IDE 上编写一个程序,我想在其中交换一些变量。如果你不知道 arduino,它基本上是用 C++ 编写的。

一些背景信息:

代码如下:

String temp = Pieces[piece][0];
Serial.println(temp);
Serial.println(Pieces[piece][0]);

代码应该 return 2 个相同的值,但实际上 returns 是:

""
"n"

第一个值也应该是 n,但它只是空白。以下是 Pieces 的初始化方式:

String Pieces[27][6] =
  {
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    {"t", "t", "t", "t", "t", "t"}
  };

问题是数组太大,所以我尝试将其更改为字符而不是字符串,但它不起作用。

这是现在的样子:

char Pieces[27][6] =
 {
    {"n", "n", "n", "n", "n", "n"},
    {"n", "n", "n", "n", "n", "n"},
    ...
    {"t", "t", "t", "t", "t", "t"}
 };

这是给我的错误:

error: too many initializers for 'char [6]'

谁能帮我正确初始化它?

既然看起来是内存相关的问题,你应该考虑使用简单的chars而不是Strings,或者如果你真的需要多字符的字符串char[] .

您的初始化将如下所示:

char Pieces[][6] =
 {
    {'n', 'n', 'n', 'n', 'n', 'n'},
    {'n', 'n', 'n', 'n', 'n', 'n'},
    ...
    {'t', 't', 't', 't', 't', 't'}
 };

你的作业是

char temp = Pieces[piece][0];

如果您需要使用字符串,请使用 char*:

char* Pieces[][6] =
    {
        { "n", "n", "n", "n", "n", "n" },
        ...
        { "n", "n", "n", "n", "n", "n" }
    };

char *temp = Pieces[0][1];

如果您不打算执行任何花哨的字符串操作,那么 String class 无论如何对您都没有用。

顺便说一句,请注意在初始化时省略数组大小是多么方便。