Ein LVALUE (kurz für den "Locator -Wert") ist eine Variable oder einen anderen Ausdruck, der einen Speicherort bezeichnet. Mit anderen Worten, es ist ein linker Wert oder etwas, dem Sie einen Wert zuweisen können.
Eine Konstante, eine Variable, ein Array oder ein Strukturmitglied kann alle als lvalues betrachtet werden, wenn sie diese Anforderung erfüllen.
Hier sind einige Beispiele von Lvalues in C:
`` `c
int Array [10];
int* pointer_to_array =&array;
int main () {
Array [0] =10; // Array [0] ist ein Lvalue
(*pointer_to_array) =10; // *pointer_to_array ist auch ein lvalue
Rückkehr 0;
}
`` `
Allerdings sind nicht alle Ausdrücke Lvalues. Beispielsweise werden Funktionsaufrufe und wörtliche Werte nicht als lvalues betrachtet.
`` `c
int function (int a) {
// a ist kein lvalue
Return a + 10;
}
int main () {
// 10 ist kein Lvalue
10 + 5;
}
`` `
Die Unterscheidung zwischen Lvalues und Rvalues (Ausdrücke, die keinen Speicherort bezeichnen) ist entscheidend, da nur Lvalues mit einem Zuordnungsoperator modifiziert werden können (=).
Hier ist ein Beispiel, um den Unterschied zu demonstrieren:
`` `c
int main () {
// a ist ein lvalue
int a =10;
// B ist ein RValue
int b =10 + 5;
a +=5; // Dies ist gültig, da A ein Lvalue ist
// Dies ist ein Kompilierungs-Zeitfehler, da B ein RValue ist
B +=5;
}
`` `
Zusammenfassend ist ein LVALUE alles, was einem Speicherort entspricht und das sich auf der linken Seite einer Zuordnung befindet (=).