将函数传递给函数时,错误左值需要作为一元“&”操作数
Error lvalue required as unary '&' operand, when passing function to a function
我刚刚开始熟悉如何将函数作为参数传递给另一个函数,以及 pointers/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
谁能分享他对为什么会这样的见解?
当你这样做时:
&foo(&x1, size)
您正在调用 函数并试图获取其return 值的地址。由于 foo
的 return 类型是 void
,你不能获取它的地址,因此错误。
当使用指向函数的指针时,使用只是函数的名称,而不是函数调用运算符()
:
func(foo, &x1, size);
此外,这是不正确的:
vect(&x1, size);
由于 &x1
的类型为 float **
,但 vect
期望其第一个参数的类型为 float *
。你反而想要:
vect(x1, size);
我刚刚开始熟悉如何将函数作为参数传递给另一个函数,以及 pointers/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
谁能分享他对为什么会这样的见解?
当你这样做时:
&foo(&x1, size)
您正在调用 函数并试图获取其return 值的地址。由于 foo
的 return 类型是 void
,你不能获取它的地址,因此错误。
当使用指向函数的指针时,使用只是函数的名称,而不是函数调用运算符()
:
func(foo, &x1, size);
此外,这是不正确的:
vect(&x1, size);
由于 &x1
的类型为 float **
,但 vect
期望其第一个参数的类型为 float *
。你反而想要:
vect(x1, size);