我找不到对这个问题的任何引用。 我有一个结构数组,我需要将其调整为更大的数组。 两个结构都已完全初始化(每个单元格都有一个非 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/