En lvalue (forkortelse for "locator value") er en variabel eller et andet udtryk, der angiver en hukommelsesplacering. Det er med andre ord en venstreværdi, eller noget du kan tildele en værdi til.
En konstant, en variabel, en matrix eller et strukturmedlem kan alle betragtes som lværdier, da de opfylder dette krav.
Her er nogle eksempler på lværdier i C:
```c
int array[10];
int* pointer_to_array =&array;
int main() {
matrix[0] =10; // array[0] er en lværdi
(*pointer_to_array) =10; // *pointer_to_array er også en lværdi
retur 0;
}
```
Det er dog ikke alle udtryk, der er lværdier. For eksempel betragtes funktionskald og bogstavelige værdier ikke som lværdier.
```c
int function(int a) {
// a er ikke en lværdi
returner a + 10;
}
int main() {
// 10 er ikke en lværdi
10 + 5;
}
```
Sondringen mellem lværdier og rværdier (udtryk, der ikke angiver en hukommelsesplacering) er afgørende, fordi kun lværdier kan ændres med en tildelingsoperator (=).
Her er et eksempel for at vise forskellen:
```c
int main() {
// a er en lværdi
int a =10;
// b er en rværdi
int b =10 + 5;
a +=5; // Dette er gyldigt, da a er en lværdi
// Dette er en kompileringsfejl, da b er en rværdi
b+=5;
}
```
Så sammenfattende er en lværdi alt, der svarer til en hukommelsesplacering, og som kan være i venstre side af en opgave (=).