En lverdi (forkortelse for "locator value") er en variabel eller et annet uttrykk som angir en minneplassering. Det er med andre ord en venstreverdi, eller noe du kan tilordne en verdi til.
En konstant, en variabel, en matrise eller et strukturmedlem kan alle betraktes som lverdier, siden de oppfyller dette kravet.
Her er noen eksempler på lverdier i C:
```c
int array[10];
int* pointer_to_array =&array;
int main() {
array[0] =10; // array[0] er en lverdi
(*peker_til_matrise) =10; // *pointer_to_array er også en lverdi
returner 0;
}
```
Imidlertid er ikke alle uttrykk lverdier. For eksempel regnes ikke funksjonskall og bokstavelige verdier som lverdier.
```c
int function(int a) {
// a er ikke en lverdi
returner en + 10;
}
int main() {
// 10 er ikke en lverdi
10 + 5;
}
```
Skillet mellom lverdier og rverdier (uttrykk som ikke angir en minneplassering) er avgjørende fordi bare lverdier kan endres med en tilordningsoperator (=).
Her er et eksempel for å demonstrere forskjellen:
```c
int main() {
// a er en lverdi
int a =10;
// b er en rverdi
int b =10 + 5;
a +=5; // Dette er gyldig, da a er en lverdi
// Dette er en kompileringstidsfeil, da b er en rverdi
b +=5;
}
```
Så, oppsummert, er en lverdi alt som tilsvarer en minneplassering og som kan være på venstre side av en oppgave (=).