c++ - memcpy 从 char 数组到结构体

标签 c++ c arrays memcpy

我有一个字符缓冲区[1024]和一个结构

typedef struct {
   int record;
   int key;
} leaf_entry;

我想要实现的是缓冲区数组,它就像树的节点一样,保存许多 leaf_entry 条目。

如果我想向下迭代缓冲区以将缓冲区中的一个条目与另一个条目进行比较

for (i = 0; i < max_ents * entry_size; i += entry_size)
{
    leaf_entry curr;
    memcpy (curr, buffer[i], entry_size)
    if (curr == entry_to_compare)
       etc...
}

这是正确的吗?有没有更简单/更有效的方法来实现这一点?

最佳答案

鉴于您的结构是 POD,您应该能够在不复制的情况下执行此操作。

我相信这样的事情应该可以工作,其中 offset 是字符缓冲区中的正确字节偏移量:

leaf_entry & x = static_cast<leaf_entry &>(buffer + offset);

关于c++ - memcpy 从 char 数组到结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33643628/

相关文章:

c - 如何在同一行上打印所有数组元素?

c++ - 使用尾随垃圾 boost gzip 读取文件

c++ - std::vector::erase 的 MoveAssignable 要求与 std::vector::emplace_back 的 MoveInsertable 要求

c - 将数组元素初始化为 NULL

c - 有没有办法按字母顺序在单个链表中插入节点?

arrays - 排序算法值作为位置

c++ - glibc 在转换类型 C++ 后检测到 free() 无效的下一个大小(快速)

c++ - 使用 QSGImageNode 渲染非平滑 QImage 的一部分

c - C语言中如何获取不同内存段的地址范围?

javascript - for循环nodeJS中的Mongo查询