byte test[4];
memset(test,0x00,4);
test[]={0xb4,0xaf,0x98,0x1a};
上述代码给我一个错误,期望在']'标记之前有主表达式。有人能告诉我这种赋值方式有什么问题吗?
byte test[4];
memset(test,0x00,4);
test[]={0xb4,0xaf,0x98,0x1a};
数组不能被赋值。你只能使用大括号进行初始化。
如果你想之后“赋值”它,最接近的方法是声明另一个数组并将其复制:
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);
或者使用 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';
}
}
Ben和Chris的意思是。
byte test[4]={0xb4,0xaf,0x98,0x1a};
如果你想在运行时执行此操作,可以使用memcpy完成任务。
byte startState[4]={0xb4,0xaf,0x98,0x1a};
byte test[4];
memcpy(test, startState, sizeof(test));
byte test[]={0xb4,0xaf,0x98,0x1a};
size_t numTestElems = sizeof(test) / sizeof(byte);
- Mike DeSimonetemplate <class T, size_t N> size_t array_size(T (&n)[N]) { return N; }
作为size_t numTestElems = array_size(test);
- Chris Lutzbyte test[4];
memset(test,0x00,4);
可以缩短为:
byte test[4] = { 0 };
{ 0, 0, 0, 0 }
(如果数组长度稍后更改,您也不必添加更多内容)。byte test[4] = { 0 };
总是让我想到花括号中的内容会被分配给所有元素(就像C++中的std::vector
构造函数之一)。 - Mike DeSimone