C 如何使用void泛型指针用值填充数组?

C 如何使用void泛型指针用值填充数组?,c,pointers,generics,casting,C,Pointers,Generics,Casting,给定以下方法 void fillArray(void *arr, int const numElements, void *val, int size) 在不知道数组的类型的情况下,如何用值(*val)填充数组(*arr)numElements是数组中的元素数,size是数组的任何类型的字节大小。您可以使用memcpy。但是,为了提升内存位置,必须首先将输入指针转换为char*。如果有void*,则不会定义指针算术运算 void fillArray(void *arr, int const n

给定以下方法

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

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

您可以使用
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);
   }
}
void fillArray(void*arr,int const numElements,void*val,int size)
{
char*cp=arr;
int i=0;
对于(;i
我明白了,我误解了这个问题。