我正在arduino IDE上编写一个程序,我想在其中交换一些变量。如果你不知道arduino,它基本上是用C ++编写的。
一些背景资料:
以下是代码:
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]'
有人可以帮我正确地初始化吗?
答案 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
类对您无用。
顺便说一下,请注意在初始化时可以方便地省略数组大小。