将函数与指针参数一起使用作为另一个函数的参数

Using function with pointer arguments as an argument for another function

本文关键字:参数 函数 另一个 一起 指针      更新时间:2023-10-16

如何正确地将带有指针参数的函数作为参数传递给另一个函数并返回值?

我有一个函数,它以指向 2 个数组(pos1 和 pos2)的指针形式接受两个参数:

float distance(float *pos1, float *pos2){
   return sqrt(pow((pos1[0]-pos2[0]),2)+pow((pos1[1]-pos2[1]),2));
}

我想将此函数作为参数传递给另一个函数:

float force(float mass1, float mass2, float(*distance)(float,float), float scaling, float *pos1, float *pos2){
   return distance(*pos1, *pos2); // how to correctly return the value?
}

这是返回值的正确方法吗?我是否需要在"力"函数中包含"距离"函数的论点?

谢谢!

第一个距离必须是一个"函数指针",它得到两个浮点*作为参数。因此,将"强制"签名更改为

float force(float m1, float m2, float (*distance)(float*, float*), float scaling)

其次,在力体调用距离与实际参数,例如:

return distance(m1, m2);

最后,当调用 force 时,只需将函数的名称作为参数传递:

x = force(y,z,&distance, scale);

函数名称前的与号通常是可选的。

我希望这有所帮助。

你不需要将一个函数"传递"给另一个函数,因为你可以在另一个函数中"调用"一个函数。我想你可以简单地拥有

float force(float mass1, float mass2, float scaling, float pos1, float pos2){
    float dis = distance(pos1, pos2);
    ......
}

即使没有函数指针,C 编程语言也是图灵完备的,函数指针在实践中相对较少使用。