使用指向数组的指针的memcpy

时间:2013-10-04 04:21:31

标签: c arrays pointers struct memcpy

我有typedef struct名为“item”的项目,其中包含2个char[254](产品名称和公司名称)和9个int变量。 (价格,金额等)。

我创建了一个来自typedef struct和一个数组(1D)和一个二维数组的指针。

我使用scanf将数据存储到指针的相应变量(到目前为止没问题)。

现在,我希望将指针变量的数据“复制并存储”到数组(1D)中,然后将1D数组的数据“复制并存储”到2D数组中。

对于指向1D数组的指针,这就是我所做的:

void pointer_conversion(item *a, item curr[10000], int total)
{
memcpy(&curr[total], a, sizeof(item*));
} 
// Tried doing: memcpy(&curr[total],a,sizeof(item*) * 100); 
// Why 100?= just to be safe.  But still not working.

现在,此函数复制并将指针char[254]的第一个a存储到1D数组curr中,但typedef struct的其余变量为{{1} }}。

有什么建议吗?

(在Windows上使用VS2012)

NULL

1 个答案:

答案 0 :(得分:1)

考虑代码片段的作用,

  • 函数返回void / nothing

    void
    
  • 函数名是pointer_conversion,有三个参数

  • 参数a是指向item的项目,(item *)
  • 参数curr是一个项目数组,(item [10000])
  • 参数total是一个int

    pointer_conversion(item *a, item curr[10000], int total)
    {
    
  • memcpy有三个参数,目标,来源和要复制的字节数

  • sizeof(item *)有多大?它和指针一样大。
  • 您要复制多少字节? sizeof(item)有多大?

    memcpy(&curr[total], a, sizeof(item*));
    }
    
  • 但您可能不想复制项目的下一个元素