如何使用void通用指针用值填充数组?

时间:2014-04-04 20:28:10

标签: c pointers generics casting

给出以下方法

void fillArray(void *arr, int const numElements, void *val, int size)

如何在不知道数组类型的情况下使用值(*arr)填充数组(*val)? numElements是数组中元素的数量,size是数组所属类型的字节大小。

1 个答案:

答案 0 :(得分:7)

您可以使用memcpy。但是,为了提升内存位置,必须先将输入指针转换为char*。如果您有void*,则不会定义指针算术运算。

void fillArray(void *arr, int const numElements, void *val, int size)
{
   char* cp = arr;
   int i = 0;
   for ( ; i < numElements; ++i, cp += size )
   {
      memcpy(cp, val, size);
   }
}