将函数传递给函数

时间:2019-04-23 17:00:59

标签: c function pointers function-pointers lvalue

我只是熟悉如何将函数作为参数传递给另一个函数,以及整个指针/ C。

我有以下具有其他功能的功能:

void func(void (*vect) (float *, float), float *x1, float size)
{
    vect(&x1, size);
    // other instructions
}

这是foo的定义方式(foo是我传递给函数的vect):

void foo(float *x1, float size)
{
    //
}

这就是我使用函数func

的方式
func(&foo(&x1, size), &x1, size);

由于某种原因,我遇到以下错误:

error: lvalue required as unary '&' operand

会有人分享他的见解为何发生的原因吗?

1 个答案:

答案 0 :(得分:6)

执行此操作时:

&foo(&x1, size)

您正在调用函数,并尝试获取其返回值的地址。由于foo的返回类型为void,因此您无法获取其地址,因此会出现错误。

使用指向函数的指针时,请使用 just 函数名称,而不要使用函数调用运算符()

func(foo, &x1, size);

此外,这是不正确的:

vect(&x1, size);

由于&x1的类型为float **,但是vect期望其第一个参数的类型为float *。相反,您想要:

vect(x1, size);