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

时间:2017-04-15 14:10:31

标签: c++ arrays arduino arduino-ide temp

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

一些背景资料:

  • Pieces是一个2D数组
  • Pieces将返回一串" n"," 1"," 2",...," 5",或者" 6"
  • Serial.println(msg)只是一个打印功能

以下是代码:

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

代码应返回2个相同的值,但它实际返回的是:

""
"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]'

有人可以帮我正确地初始化吗?

1 个答案:

答案 0 :(得分:0)

由于它似乎是与内存相关的问题,因此如果您确实需要多字符字符串,则应考虑使用简单的char代替String s或char[]。< / p>

您的初始化将如下所示:

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类对您无用。

顺便说一下,请注意在初始化时可以方便地省略数组大小。