c - 左值需要作为一元 ‘&’ 操作数——将函数结果作为指针传递

标签 c pointers


我的代码有问题。 有以下功能:

static Poly PolyFromCoeff(int coeff);
static Mono MonoFromPoly(const Poly *p, int exp);

在另一个函数中我有这一行:

Mono m = MonoFromPoly(&PolyFromCoeff(10),4);

但我收到此错误消息:

lvalue required as unary ‘&’ operand

如果我将第一个结果保存到一个变量中,则没有错误:

Poly p = PolyFromCoeff(10);
Mono m = MonoFromPoly(&p,4);

为什么第一个方案是错误的?

最佳答案

正如它所说,运算符 & 需要一个左值作为其参数,即它不能应用于临时值。地址不与值关联,仅与对象关联。

在第二种形式中,您实例化了一个包含此值的对象,您可以轻松获取该对象的地址。

关于c - 左值需要作为一元 ‘&’ 操作数——将函数结果作为指针传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43927124/

相关文章:

c - C中变量初始化的宏

c - 使用用户输入进行 malloc

c++ - For Loop 通过乘法打印出 10 个值

c - 初始化 static char const *somevar

c - 在 gcc 中出现错误但仍然成功运行

你能在一个 select() block 中多次调用 sendTo() 吗?

c - 柔性/Bison : Comma-separated linked list?

c - 将指针作为局部变量传递给函数

c - 类型转换指针取消引用

c# - 从 C# 调用 C dll 中的函数,它返回某种指向函数指针的指针