rvalue , lvalue

Все, что ниже касается стандарта С11 и после него.

Название LValue и RValue ссылок происходит банально от расположения параметров относительно оператора = .

L-value это то , что может стоять в левой , но также и в правой части выражения присваивания.

R-value  может быть только в правой части от оператора присваивания.

int a = 25;
a LValue , 25 - RValue

область видимости RValue ссылки локальная, то есть при выходе из функции где RValue используется ссылка гарантированно удаляется.

Ещё удобно называть RValue - временный об'ект. Это его сразу  отличает от LValue.

фотка 1