Значение L против значения R в C

Я отвечаю на вопрос из учебникаэтот учебник.

Я узнаю об указателях на C и натолкнулся на l-значения и r-значения. Из моего понимания:

l-values are values that are defined after they are executed (++x)
r-values are values that are not defined after they are executed (x++)

Это что правильно?

Вопрос, на который я хотел ответить (с моими попытками):

a) Which of the following C expressions are L-Values?
   1.  x + 2 Not a L value
   2.  &x    Is a L value
   3.  *&x   Is a L value
   4.  &x + 2  Not a L value
   5.  *(&x + 2) Is a L value
   6.  &*y  Is a L value

b) Is it possible for a C expression to be a L-value but NOT a R-value? Explain
   I've read that a L value can be a R value but not vice versa. I can't think of an example of something being an L value but not a R value.

c) Is &(&z) ever legal in C? Explain
   Assuming this is not legal since a memory address doesn't have its own memory address?

Я рядом? Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос