【发布时间】:2016-03-30 14:54:19
【问题描述】:
取以下代码:
typedef UCHAR MY_BUFFER[6];
class MY_CLASS
{
MY_BUFFER m_buffer;
void Initialize(const MY_BUFFER* newBuffer)
{
memcpy(m_buffer, *newBuffer, sizeof(MY_BUFFER));
}
};
在上面的 Initialize 函数中,将字节从 newBuffer 复制到 m_buffer 的正确方法是什么?或者初始化函数应该更像这样:
void Initialize(const MY_BUFFER* newBuffer)
{
memcpy(&m_buffer, newBuffer, sizeof(MY_BUFFER));
}
【问题讨论】:
-
奇怪的是,两者都可以。我认为第一个更清楚地表达了意图。
-
Frank Puffer 建议的语法怎么样?我问的原因是 OACR(构建时间分析工具)抱怨第一个版本,但我不确定我应该使用什么。
-
你也可以使用
memcpy(&m_buffer[0], &(*newBuffer)[0], sizeof(MY_BUFFER)); -
@Pixelchemist:是的,但你为什么要这样做?
-
@FrankPuffer:如果不出意外的话,我还是会选择
void Initialize(const MY_BUFFER & newBuffer) { std::copy(std::begin(newBuffer), std::end(newBuffer), std::begin(m_buffer)); }。 (而不是伪装的C代码。)
标签: c++ arrays pointers typedef