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

标签 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 numElements, void *val, int size)
{
   char* cp = arr;
   int i = 0;
   for ( ; i < numElements; ++i, cp += size )
   {
      memcpy(cp, val, size);
   }
}

关于c - 如何使用 void 通用指针用值填充数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22872419/

相关文章:

c - C语言free()的问题

c - 在c中使用基于区域的内存管理

c++ - 函数调用后输出不正确

c - fgets 在 gdb 下遇到段错误,但在正常运行时不会遇到

.net - 这个语法是什么: "Component.For<IOutput>()"?

c++ - 维护状态的正则表达式库,逐字符输入并在找到匹配项时返回 true

c++ - 具有无符号短整数的结构的大小

java - null 指向任何内容是什么意思,为什么要使用 null?

c# - 如何比较两个通用对象与嵌套集合

java多服务开闭原则