【发布时间】:2017-01-13 20:46:38
【问题描述】:
我有一个巨大的字节数组(char 数组),我用它来写入另一个地址。 例如
char myBytes[] = { 0x43, 0x31, 0x63 };//just an example
(char*)0x123456 = &myBytes;
但问题是我收到一个错误提示
"expression must be a modifiable lvalue"
我已经尝试了一些其他的东西,比如
char myBytes[] = { 0x43, 0x31, 0x63 };//just an example
*(char*)0x123456 = myBytes;
但我得到了同样的错误。我做错了什么,我能做些什么来完成我想要完成的事情?
【问题讨论】:
-
memcpy((char*)0x123456, myBytes, sizeof(myBytes));坏主意,虽然... -
(char*)0x123456是char *类型的常量。你不能分配给它,就像你不能分配给值1一样。 -
@EugeneSh.,你为什么这么肯定这是个坏主意?
-
@SergeyA 在 C 或 C++ 中使用显式地址仅在非常特殊的情况下是合理的,而我不太确定 OP 是否如此。即使在这些情况下,通常也有其他方法。
-
@EugeneSh.,显然,您从未使用过 MCU,是吗?
标签: c++ arrays memory byte memory-address