我正在尝试解析一个接收8个字节的倍数的数组,然后一次发回每个8个字节的数组。
构建时出现expression is not assignable
或lvalue 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/