我希望有一个名为“get_example_by_id”的函数,它接受一个int l
和“返回”int a, b
,以及两个函数指针f
和J
。
int a, b;
double (*f) (double), (*J) (double, double);
get_example_by_id(l, &a, &b, &f, &J);
稍后,我需要f
和J
是可调用的,因为我需要它们来进行计算。
double f1(double t);
double F1(double t, double alpha);
void get_example_by_id(int l, int *a, int *b, double (*f) (double), double (*F) (double, double)) {
switch(l) {
case 1:
*a = 0; *b = 5; f = f1; F = F1;
default:
break;
}
}
double f1(double t) {
return t;
}
double F1(double t, double alpha) {
return 1/tgamma(alpha + 2) * powl(t, alpha + 2);
}
(get_example_by_id在上面未显示的部分中定义)f(1)为NULL,因此不可调用。此外,我得到这个错误“未定义的符号_f和_F”,因为我不知道如何解决的实验。任何帮助,甚至关于如何编码的新想法,不胜感激。
还有更多的功能要来,这应该成为某种数据库
编辑:工作示例将是get_example_by_id()
调用后的printf("%f", f(1))
,以便我可以确保函数调用实际上是正确执行的。
EDIT2:修复了实际函数指针声明。执行f = NULL
时,问题现在是(与以前一样)Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
1条答案
按热度按时间n9vozmp41#
它不是函数指针。要声明函数指针,需要使用不同的语法。
要修改指针,您需要将引用传递给它:
https://godbolt.org/z/oTndWeze9