我有几个字节数组和一个字节数组的数组。我想从最后一个数组(字节数组的数组)中获取字节数组的大小。 sizeof()
在字节数组上运行良好,但在我尝试使用字节数组索引数组时却不行。
byte A[]={B01111110,B10001000,B10001000,B10001000,B01111110};
byte B[]={B11111110,B10010010,B10010010,B10010010,B01101100};
byte gamma[]={B11111110,B10000000,B10000000,B10000000,B10000000};
byte *test[]={A,B,gamma}
Serial.println(sizeof(gamma));
Serial.println(sizeof(test[2]));
第一个串行打印给出5
正确,第二个给出2
(可能是指针的大小)。
如何获得正确的结果,因为我想在for循环中使用test[i]
。
我知道我应该将*test[]
声明为test[][]
,以便不获取指针的大小,但是我错误地将byte*
分配给byte
答案 0 :(得分:1)
您可以使用:
byte (*(test[3]))[5]={&A, &B, &gamma};
static_assert(5 == sizeof(*test[0]), "unexpected size");
但使用std::vector
会更简单。
如果不同阵列的大小不同,您必须提供一种了解大小的方法:
'\0'
)沿指针给出长度/大小,如:
std::pair<byte*, std::size_t> tests[] = {
{A, sizeof(A)},
{B, sizeof(B)},
{gamma, sizeof(gamma)}
};