byte test[4];
memset(test,0x00,4);
test[]={0xb4,0xaf,0x98,0x1a};
Run Code Online (Sandbox Code Playgroud)
上面的代码给了我一个错误,期望在']'标记之前的primary-expression.谁能告诉我这种类型的任务有什么问题?
Unc*_*ens 15
无法分配数组.您只能使用大括号初始化它们.
如果你想稍后"分配"它,你可以得到的最接近的是声明另一个数组并复制它:
const int array_size = 4;
char a[array_size] = {}; //or {0} in C.
char b[array_size] = {0xb4,0xaf,0x98,0x1a};
std::copy(b, b + array_size, a);
Run Code Online (Sandbox Code Playgroud)
或者使用std :: tr1或boost中的数组类:
#include <tr1/array>
#include <iostream>
int main()
{
std::tr1::array<char, 4> a = {};
std::tr1::array<char, 4> b = {0xb4,0xaf,0x98,0x1a};
a = b; //those are assignable
for (unsigned i = 0; i != a.size(); ++i) {
std::cout << a[i] << '\n';
}
}
Run Code Online (Sandbox Code Playgroud)
Evi*_*ach 12
本和克里斯所说的是.
byte test[4]={0xb4,0xaf,0x98,0x1a};
Run Code Online (Sandbox Code Playgroud)
如果要在运行时执行此操作,可以使用memcpy来完成工作.
byte startState[4]={0xb4,0xaf,0x98,0x1a};
byte test[4];
memcpy(test, startState, sizeof(test));
Run Code Online (Sandbox Code Playgroud)
除了@Chris Lutz的正确答案:
byte test[]={0xb4,0xaf,0x98,0x1a};
Run Code Online (Sandbox Code Playgroud)
请注意,在这种情况下,您不需要显式指定数组大小,除非您希望数组长度大于括号之间的元素数.
这仅在您声明数组时初始化数组时才有效.否则,您将必须使用您喜欢的技术(循环,STL算法等)显式初始化每个数组元素.