gpt4 book ai didi

c++ - 正确获取 sizeof()

转载 作者:行者123 更新时间:2023-11-28 06:42:46 24 4
gpt4 key购买 nike

我有几个字节数组和一个字节数组数组。我想从最后一个数组(字节数组的数组)中获取字节数组的大小。 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

最佳答案

您可以使用:

byte (*(test[3]))[5]={&A, &B, &gamma};

static_assert(5 == sizeof(*test[0]), "unexpected size");

但使用 std::vector 会更简单。

如果不同数组的大小不同,你必须提供一种知道大小的方法:

  • 提供一个标记值(作为 C 字符串的 '\0')
  • 给出指针的长度/大小,例如:

    std::pair<byte*, std::size_t> tests[] = {
    {A, sizeof(A)},
    {B, sizeof(B)},
    {gamma, sizeof(gamma)}
    };

关于c++ - 正确获取 sizeof(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25641314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com