wen*_*eno 2 c pointers function-pointers function lvalue
我只是熟悉如何将函数作为参数传递给另一个函数,以及整个指针/ C。
我有以下功能需要另一个功能:
void func(void (*vect) (float *, float), float *x1, float size)
{
vect(&x1, size);
// other instructions
}
Run Code Online (Sandbox Code Playgroud)
这是foo定义的方式(foo是vect我传递给函数的方式):
void foo(float *x1, float size)
{
//
}
Run Code Online (Sandbox Code Playgroud)
这就是我使用该功能的方式 func
func(&foo(&x1, size), &x1, size);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我收到以下错误:
error: lvalue required as unary '&' operand
谁能分享他的见解,为什么会这样?
执行此操作时:
&foo(&x1, size)
Run Code Online (Sandbox Code Playgroud)
您正在调用该函数,并尝试获取其返回值的地址。由于返回类型foo为void,因此您无法获取其地址,因此会出现错误。
使用指向函数的指针时,仅使用函数名称,而不使用函数调用运算符():
func(foo, &x1, size);
Run Code Online (Sandbox Code Playgroud)
另外,这是不正确的:
vect(&x1, size);
Run Code Online (Sandbox Code Playgroud)
既然&x1具有type,float **但vect期望其第一个参数为type float *。相反,您想要:
vect(x1, size);
Run Code Online (Sandbox Code Playgroud)