c - 在 char* 中存储不同的结构?

标签 c string memory-management structure

<分区>

假设我们有一个类似于那个的结构:

struct tree
{
    unsigned short member1;
    unsigned long member2;
    unsigned char member3;
    unsigned short member4;
};

那么,我们是否可以使用 memcpy 或其他任何东西将整个结构直接存储在缓冲区类型 char* (自动化,因为结构可能特别大)

最佳答案

是的,这很好,没有对齐问题:

struct tree leaf = { 1, 2, 3, 4 };

char buf[sizeof leaf];   // or malloc
memcpy(buf, &leaf, sizeof leaf);

// do stuff...

struct tree branch;
memcpy(&branch, buf, sizeof branch);
printf("%d\n", branch.member1); // etc.

关于c - 在 char* 中存储不同的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26728028/

相关文章:

c++ - 尝试从某个 COM 端口读取/写入时程序无法执行

c - 在 openCV 中访问 mat 元素

c - 多线程程序中计数意外增加

c - 将字符传递给 char *

c - 在 C 中将字符串的第一个字符读取为整数

C# 使文本框中的一组字符表现得像一个字符

python - 在这种情况下,内存分配在 python 中是如何工作的?

c++ - 创建全局常量 C 字符串的正确方法

c - 在 C 中初始化内存分配器

java - 什么是 Java 堆栈与 native 内存的映射。