给出以下方法
void fillArray(void *arr, int const numElements, void *val, int size)
如何在不知道数组类型的情况下使用值(*arr
)填充数组(*val
)? numElements
是数组中元素的数量,size是数组所属类型的字节大小。
答案 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);
}
}