Laut "C - A Reference Manual" ist ein Lvalue ein Ausdruck, der sich auf ein Objekt bezieht, so dass das Objekt untersucht oder verändert werden kann.Sind diese Zeiger lvalues?
Zum Beispiel
int ranks[10];
sind dann ranks
und ranks+3
lvalues? Da ranks
(Zeiger auf das erste Element des Arrays) und ranks+3
(Zeiger auf das vierte Element des Arrays) beziehen sich auf Objekte, ich denke, sie sind lvalues - oder sind es nicht lvalues?
Mögliches Duplikat von [C Wie erkennt man rvalue und lvalue?] (Http: // stackoverflow.com/questions/11105284/c-how-to-identify-rvalue-and-lvalue) –
C11-Entwurfsstandard n1570, * 6.3 Konvertierungen 6.3.2.1 L-Werte, Arrays und Funktionsbezeichner 3 Außer wenn es der Operand des sizeof-Operators ist , der _Alignof-Operator, oder unary & operator, oder ist ein String-Literal, das zum Initialisieren eines Arrays verwendet wird, ein Ausdruck, der hat type '' array of type '' wird in einen Ausdruck mit dem Typ '' pointer to type '' konvertiert Das verweist auf das Anfangselement des Array-Objekts und ist kein Lvalue. Wenn das Array-Objekt Registerspeicherklasse hat, ist das Verhalten nicht definiert. * – EOF
Es hängt vom Kontext ab. Bitte geben Sie diesen Kontext an. – 2501