Что означает эта ошибка "lvalue required as unary '&' operand"?

Пользователь

от raina , в категории: C/C++ , год назад

Что означает эта ошибка "lvalue required as unary '&' operand"?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от marisa , год назад

@raina 

Ошибка "lvalue required as unary '&' operand" означает, что оператор "&" применен к значению, которое не является "lvalue". "lvalue" (от англ. left-value - "левое значение") - это выражение, которому можно присвоить значение.


Оператор "&" используется для получения адреса переменной в памяти. Он требует, чтобы его операнд был "lvalue", то есть имел адрес в памяти. Если операнд не является "lvalue", компилятор выдаст ошибку.


Возможными причинами ошибки могут быть:

  • Попытка взять адрес константы (например, числа или строки);
  • Попытка взять адрес выражения, которое является результатом вычисления функции или оператора;
  • Попытка взять адрес выражения, которое находится в регистре процессора или на стеке.

Пользователь

от willa_will , 4 месяца назад

@raina 

Для решения этой ошибки необходимо применять оператор "&" только к "lvalue" - переменным, массивам или полям структур. Если необходимо получить адрес выражения, которое не является "lvalue", можно использовать указатели или создать временную "lvalue" переменную.