memcpy和2d数组

时间:2011-02-08 05:51:05

标签: c arrays 2d memcpy

struct item_CHECK_LIST_data
{

    char    list[MAX_CHECK_LIST_OPTIONS + 1][MAX_ITEM_TEXT_LEN];
    char    checkeditems[MAX_CHECK_LIST_OPTIONS + 1];//which are checked

    char    number_of_options;
};

我可以用memcpy复制吗?

我有一个奇怪的错误,将由memcpy无法解释......

3 个答案:

答案 0 :(得分:5)

是的,你可以在C中使用memcpy个二维数组,只要它们实际上是2D数组而不是一维指针数组。二维数组在内存中连续排列,因此memcpy将正确读取所有块。但是,如果你的数组是指向更多1D数组的一维指针数组,那么memcpy只会复制指针,你最终会得到一个浅拷贝而不是一个深拷贝。

答案 1 :(得分:2)

您是否使用sizeof()来查找要复制的内容?结构的元素可以填充,因此大小大于部分的总和

答案 2 :(得分:0)

如果只是整个结构要复制,请不要使用memcpy。只需做一项任务,=令牌即可。