gpt4 book ai didi

c - 将函数传递给函数时,错误左值需要作为一元 '&' 操作数

转载 作者:行者123 更新时间:2023-12-02 08:02:22 24 4
gpt4 key购买 nike

我刚刚开始熟悉如何将函数作为参数传递给另一个函数,以及指针/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);

出于某种原因,我收到以下错误:

错误:左值需要作为一元“&”操作数

谁能分享他对为什么会发生这种情况的见解?

最佳答案

当你这样做时:

&foo(&x1, size)

您正在调用 函数并试图获取其返回值的地址。由于 foo 的返回类型是 void,您不能获取它的地址,因此会出错。

当使用指向函数的指针时,使用函数的名称,而不是函数调用运算符():

func(foo, &x1, size);

此外,这是不正确的:

vect(&x1, size);

因为 &x1 的类型是 float **vect 期望它的第一个参数是 float * 类型.你反而想要:

vect(x1, size);

关于c - 将函数传递给函数时,错误左值需要作为一元 '&' 操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55816117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com