Ett lvärde (förkortning av "locator value") är en variabel eller annat uttryck som anger en minnesplats. Det är med andra ord ett vänstervärde, eller något du kan tilldela ett värde till.
En konstant, en variabel, en matris eller en strukturmedlem kan alla betraktas som lvärden, eftersom de uppfyller detta krav.
Här är några exempel på l-värden i C:
```c
int array[10];
int* pointer_to_array =&array;
int main() {
array[0] =10; // array[0] är ett lvärde
(*pekare_till_matris) =10; // *pointer_to_array är också ett lvärde
returnera 0;
}
```
Alla uttryck är dock inte lvärden. Till exempel betraktas inte funktionsanrop och bokstavliga värden som lvärden.
```c
int function(int a) {
// a är inte ett lvärde
returnera a + 10;
}
int main() {
// 10 är inte ett lvärde
10 + 5;
}
```
Skillnaden mellan lvalues och rvalues (uttryck som inte anger en minnesplats) är avgörande eftersom endast lvalues kan modifieras med en tilldelningsoperator (=).
Här är ett exempel för att visa skillnaden:
```c
int main() {
// a är ett lvärde
int a =10;
// b är ett rvärde
int b =10 + 5;
a +=5; // Detta är giltigt, eftersom a är ett lvärde
// Detta är ett kompileringsfel, eftersom b är ett rvärde
b+=5;
}
```
Så sammanfattningsvis är ett lvärde allt som motsvarar en minnesplats och som kan finnas på vänster sida av en uppgift (=).