我正在尝试解析一个接收8个字节的倍数的数组,然后一次发回每个8个字节的数组。

构建时出现expression is not assignablelvalue required as left operand of assignment错误

我试图弄清楚为什么我不能简单地将数组的地址更改为新位置。起初我以为这是C样式的数组问题,但是当我尝试使用std::vector<unsigned char>时发生了相同的错误

有没有复制字节的更好方法吗?

谢谢,

unsigned char str_send[8];
unsigned char str_recv[BUF_SIZE];

int n = receive(cport_nr, str_recv, (int)BUF_SIZE);

if (n > 0 && ( n % 8 == 0 ) )
{
    for (int c = 0; c < n / 8; c++) //Break up multiple 8-byte chunks
    {
        &str_send[0] = &str_recv[c * 6]; //ERROR expression is not assignable
    }
}
return (0);

最佳答案

您不能更改变量的地址。

你可以做的是建立指向原始数组的数组,但此时你只需复制地址(大概8个字节每个),而不是单字节值。然后,您必须取消引用这些指针,这使得发送它们指向的指针变得很简单。

复制字节正是您要在此处执行的操作。然后,您可以按原样发送缓冲区:

str_send[0] = str_recv[c * 6];

关于c++ - 编写`&str_send [0] =&str_recv [c * 6];时,C++表达式不可分配。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53218912/

10-12 16:04