临时变量未从数组中分配正确的值
Temp variable not assigning right value from array
我正在 arduino IDE 上编写一个程序,我想在其中交换一些变量。如果你不知道 arduino,它基本上是用 C++ 编写的。
一些背景信息:
- Pieces 是一个二维数组
- Pieces 将 return 一串 "n"、“1”、“2”、...、“5”或“6”
- Serial.println(msg) 只是一个打印函数
代码如下:
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]'
谁能帮我正确初始化它?
既然看起来是内存相关的问题,你应该考虑使用简单的char
s而不是String
s,或者如果你真的需要多字符的字符串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 无论如何对您都没有用。
顺便说一句,请注意在初始化时省略数组大小是多么方便。
我正在 arduino IDE 上编写一个程序,我想在其中交换一些变量。如果你不知道 arduino,它基本上是用 C++ 编写的。
一些背景信息:
- Pieces 是一个二维数组
- Pieces 将 return 一串 "n"、“1”、“2”、...、“5”或“6”
- Serial.println(msg) 只是一个打印函数
代码如下:
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]'
谁能帮我正确初始化它?
既然看起来是内存相关的问题,你应该考虑使用简单的char
s而不是String
s,或者如果你真的需要多字符的字符串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 无论如何对您都没有用。
顺便说一句,请注意在初始化时省略数组大小是多么方便。