gpt4 book ai didi

c++ - memcpy - 获取临时数组错误的地址

转载 作者:行者123 更新时间:2023-12-04 16:36:39 26 4
gpt4 key购买 nike

我正在研究 Arduino 并尝试更改数组的元素。在设置之前,我像这样初始化数组:

bool updateArea[5] = { false };

然后我想像这样更改数组:

updateArea[0] => false,
updateArea[1] => true,
updateArea[2] => false,
updateArea[3] => false,
updateArea[4] => true

通过使用:

memcpy(&updateArea[0], (bool []) {false, true, false, false, true}, 5);

但是,我收到“获取临时数组的地址”错误。

我也尝试在设置和循环函数中初始化数组,但得到了同样的错误。

最佳答案

这种语法在 C 中有效,但在 C++ 中无效 - C++ 是 Arduino IDE 的底层语言。

但是您有一些简单的解决方案:

  • 既然您无论如何都愿意写出数组,为什么不只是:

    bool updateArea[5] = {false, true, false, false, true};
  • 您可以将数组声明为非临时数组,然后将其传递给memcpy:

    static const bool newArray[5] = {false, true, false, false, true};
    memcpy(updateArea, newArray, sizeof(updateArea));
  • 如果您可以假设 sizeof(bool) == 1,那么您可以使用这个 hacky 解决方案:

    memcpy(updateArea, "\x00\x01\x00\x00\x01", sizeof(updateArea));

    这将直接复制字节。

关于c++ - memcpy - 获取临时数组错误的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69100593/

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