C语言中的Foreach函数

Too*_*204 3 c foreach function

我想创建一个函数,该函数需要一个数组和一个函数,并在数组中的每个元素上调用该函数

我一直在寻找解决方案,但它们似乎都使用宏,而如果可能的话,我希望使用函数。

我正在寻找可以像下面这样工作的东西

void print_string()
{
    printf("%d\n", num);
}

int array[] = { 1, 2, 3, 4, NULL }; // So the foreach function knows when it has reached the end

for_each_function(array, print_number);
Run Code Online (Sandbox Code Playgroud)

输出:

1
2
3
4
Run Code Online (Sandbox Code Playgroud)

编辑:它需要是通用的,因此可能需要一个宏

dav*_*uda 5

您可能应该使用函数指针。这样的使用函数指针的完整实现就是这样。

#include <stdio.h>

void for_each(int * arr, int size, void (*fun)(int))
{
  for (int i = 0; i < size; i++)
  {
    (*fun)(arr[i]);
  }
}

void print_num(int num)
{
  printf("%d\n", num);
}

int main()
{
  int array [] = {1, 2, 3, 4};
  for_each(array, 4, print_num);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)