gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:29:03 25 4
gpt4 key购买 nike

关于 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 代替)或从一种类型转换为另一种类型。

最佳答案

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

您正在寻找这样的东西吗?

#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;
}

或者可能是这样的:

#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++;
arg++;
}
}

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

int arg111[] = { 1, 11 };
int arg222[] = { 2, 22 };
print(funcs, arg111);
print(funcs, arg222);
return 0;
}

关于c - 将函数数组(带参数)作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59195812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com