左值必需

时间:2010-04-10 20:40:13

标签: c

任何人都可以用简单的话语告诉我这个L值是什么以及为什么我遇到错误“函数main()中需要的L值?”

2 个答案:

答案 0 :(得分:4)

左值是可以分配或指向的左旋 这是一个有地址的东西。

示例:

int f()
{
    return 5;
}
f() = 8; // doesn't compile, f() is not an lvalue

int* g()
{
    int* pv = malloc(sizeof(int));
    *pv = 5;
    return pv;
}
*g() = 8; // compiles, as *g() is a lvalue

如果您发布了代码,我们将告诉您为什么会收到有关丢失左值的错误消息。

答案 1 :(得分:3)

左值是指给一个对象的表达式的术语,即带有地址的东西。

从历史上看,这是因为它出现在作业的左侧是有效的。相比之下,可以出现在赋值右侧的某些内容是 rvalue ,但 rvalue 实际上是指任何不是左值<的表达式< / em>的

通常,您可以将左值转换为 rvalues (对象具有值),但不是相反。

通常,您所获得的错误意味着您正在尝试对仅对 lvalues 有效的 rvalue 执行某些操作。

可能是,分配一个函数的结果,或者取一个文字的地址。

f() = 5;

int *p = &5;