lvalue Требуется - PullRequest
       1

lvalue Требуется

0 голосов
/ 11 апреля 2010

Может кто-нибудь сказать мне простыми словами, что это за значение L и почему я сталкиваюсь с ошибкой "Значение L требуется в функции main ()"?

Ответы [ 2 ]

4 голосов
/ 11 апреля 2010

Lvalue - это то, что может быть присвоено или взято указателем.
Это то, что имеет адрес.

Пример:

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

Если вы опубликуете свой код, мы сможем сообщить вам, почему вы получаете сообщение об ошибке об отсутствии lvalue.

3 голосов
/ 11 апреля 2010

lvalue - это термин, данный выражению, которое относится к объекту, то есть к чему-либо с адресом.

Исторически это происходит из-за того, что это то, что действительно может появиться слева от назначения. Напротив, известно, что что-то, что может появиться справа от назначения, было rvalue , однако rvalue фактически относится к любому выражению, которое не является lvalue .

Обычно вы можете конвертировать lvalues ​​ в rvalues ​​ (объекты имеют значение), но не наоборот.

Обычно ошибка, которую вы получаете, означает, что вы пытаетесь что-то сделать с rvalue , который действителен только для lvalues ​​.

Это может быть присвоение результата функции или получение адреса литерала.

f() = 5;

int *p = &5;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...