小编Alb*_*ert的帖子

有没有办法将未知类型的数组作为参数传递给 C 中的函数?

我一直在努力提高我的 C 技能和知识。今天我尝试创建一个接受任何类型数组的函数,但我还没有找到成功的方法,我正在使用 ANSI C 并且我尝试过将其作为 void 指针传递,但是当我尝试使用参数操作内存时,编译器会抱怨。有什么办法可以实现吗?我在想可能可以通过预处理器指令来完成,但我不确定。

PS:我的目标不是用数据填充数组,这只是一个函数,而是理解和学习如何在我不知道其类型的情况下传递数据,或者允许我的函数处理多种类型的数据数据。

这是编译过程的输出:

array_test.c:在函数“array_fill”中:

array_test.c:34:13:警告:算术中使用“void *”类型的指针 [-Wpointer-arith]

*(数组+ i)=数据;

^

array_test.c:34:5:警告:取消引用“void *”指针

*(数组+ i)=数据;

^~~~~~~~~~~~

array_test.c:34:5:错误:void 表达式的使用无效

*(数组+ i)=数据;

^

这是我的代码:

#include <stdio.h>

#define array_length(array) (sizeof(array)/sizeof(array[0]))

#define ARBITRARY_SIZE 10    

typedef enum
{
  false,
  true
} bool;

int array_fill(void*, int, int);

int main(int argc, char* argv[])
{
  int array[ARBITRARY_SIZE];
  int i;
 
  array_fill(array, array_length(array), 0);

  for(i = 0; i < array_length(array); i++)
  {
    printf("array[%d]: %d\n", i, *(array + i));
  }

  return 0;
} 

int array_fill(void* …
Run Code Online (Sandbox Code Playgroud)

c ansi-c

2
推荐指数
1
解决办法
3532
查看次数

标签 统计

ansi-c ×1

c ×1