将函数数组(带有参数)作为参数传递给函数

时间:2019-12-05 13:02:38

标签: c

Passing array of functions as argument to function的扩展问题。

我想将一组函数(带有自己的参数)作为参数传递给另一个函数。

简单地说,不是使它们无效,而是向它们添加参数。

从上述问题中借来的代码:

char *howdy(void) { return "howdy"; }
char *goodbye(void) { return "goodbye"; }

typedef char *(*Charpfunc)(void);

void print(Charpfunc *p)
{
    while (*p) {
        puts((*p)());
        p++;
    }
}

int main()
{
    Charpfunc funcs[] = {
        hello, howdy, goodbye, NULL
    };

    print(funcs);
    return 0;
}

我尝试了显而易见的解决方案,但无法使其正常工作。 最常见的错误是:typedef被初始化(改为使用decltype)或从一种类型转换为另一种类型。

1 个答案:

答案 0 :(得分:0)

我不确定您的问题中的“(带有自己的论点)” 到底是什么意思。

您是否正在寻找类似的东西?

['First Floor 1085 s.f.', '\nSecond Floor 587 s.f.', '\nPorches 393 s.f.', '\nCovered Parking 642 s.f.', '\nStorage 187 s.f.', '\nUnder Roof 2894 s.f.']

或者类似这样的东西:

#include <stdio.h>

char* howdy(int arg) { printf(">howdy: arg = %d\n", arg); return "howdy"; }
char* goodbye(int arg) { printf(">goodbye: arg = %d\n", arg);  return "goodbye"; }

typedef char* (*Charpfunc)(int arg);

void print(Charpfunc* p, int arg)
{
  while (*p) {
    puts((*p)(arg));
    p++;
  }
}

int main()
{
  Charpfunc funcs[] = {
      howdy, goodbye, NULL
  };

  print(funcs, 111);
  print(funcs, 222);
  return 0;
}