c - memcpy() 从较小的数组到较大的数组

标签 c arrays memcpy

我找不到对这个问题的任何引用。 我有一个结构数组,我需要将其调整为更大的数组。 两个结构都已完全初始化(每个单元格都有一个非 NULL 的值)

typedef struct Square {
...
...
}Square;

Square s1[1024];
Square s2[2048];

如果我使用 memcpy() 将 s1 复制到 s2 中,s2 会是什么样子?我知道它复制字节数据。 前 1024 个单元是否与 s1 相同,其余 1024 个单元是否与初始化时相同?还是也会影响他们?

谢谢

P.S 这里的数组是静态分配的,但我在这里写是为了方便。我使用 malloc()

分配了它们

最佳答案

如果你这样做了:

memcpy(s2, s1, sizeof(s1));

s2 中的前 1024 个 Square 将从 s1 中复制,其余的将保持不变(因此如果它们未初始化,它们仍将未初始化)。

请记住,如果它们像您所说的那样是堆分配的,则您不能使用 sizeof。你可能会发现 realloc如果您要做的只是扩大阵列,这很有用。

关于c - memcpy() 从较小的数组到较大的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11786970/

相关文章:

c++ - void 函数返回 Int 和 Void

将 unsigned long long 的最低字节复制到 C 中的数组

无法定义共享内存对象的大小

c++ - 如何找到 C 中可执行文件的位置?

c - 这个C程序有什么问题?我总是出现一个我们没有输入的新数字?用Dev-C++编译

c - 提高通用交换的性能

c++ - C++ 中 sizeof 的行为

python - 交错4个相同长度的python列表

c++ - 在不先构建数组的情况下将数字列表传递给 C++ 中的函数?

python - 使用序列创建的 numpy 数组