【问题标题】:How to fill an array with a value using void generic pointers?如何使用 void 泛型指针用值填充数组?
【发布时间】: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


【解决方案1】:

您可以为此使用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);
   }
}

【讨论】:

  • 我明白了,我误解了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 2023-03-04
  • 2010-12-10
  • 2012-02-07
  • 2011-01-28
  • 2019-11-17
  • 1970-01-01
相关资源
最近更新 更多