【发布时间】:2014-04-04 20:28:09
【问题描述】:
给定以下方法
void fillArray(void *arr, int const numElements, void *val, int size)
如何在不知道数组类型的情况下用值 (*val) 填充数组 (*arr)? numElements 是数组中元素的数量,size 是数组的任何类型的字节大小。
【问题讨论】:
标签: c pointers generics casting
给定以下方法
void fillArray(void *arr, int const numElements, void *val, int size)
如何在不知道数组类型的情况下用值 (*val) 填充数组 (*arr)? numElements 是数组中元素的数量,size 是数组的任何类型的字节大小。
【问题讨论】:
标签: c pointers generics casting
您可以为此使用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);
}
}
【讨论】: