Une lvalue (abréviation de « valeur de localisateur ») est une variable ou une autre expression qui désigne un emplacement mémoire. En d’autres termes, il s’agit d’une valeur gauche ou de quelque chose à laquelle vous pouvez attribuer une valeur.
Une constante, une variable, un tableau ou un membre de structure peuvent tous être considérés comme des valeurs l, car ils répondent à cette exigence.
Voici quelques exemples de lvalues en C :
```c
tableau int[10];
int* pointer_to_array =&array;
int main() {
tableau[0] =10 ; // array[0] est une lvalue
(*pointer_to_array) =10 ; // *pointer_to_array est aussi une lvalue
renvoie 0 ;
}
```
Cependant, toutes les expressions ne sont pas des lvalues. Par exemple, les appels de fonction et les valeurs littérales ne sont pas considérés comme des lvalues.
```c
fonction int (int a) {
// a n'est pas une lvalue
renvoie un + 10 ;
}
int main() {
// 10 n'est pas une lvalue
10 + 5 ;
}
```
La distinction entre les lvalues et les rvalues (expressions qui ne désignent pas un emplacement mémoire) est cruciale car seules les lvalues peuvent être modifiées avec un opérateur d'affectation (=).
Voici un exemple pour démontrer la différence :
```c
int main() {
// a est une lvalue
entier a =10 ;
// b est une valeur r
int b =10 + 5 ;
une +=5 ; // Ceci est valide, car a est une lvalue
// Il s'agit d'une erreur de compilation, car b est une valeur r
b + =5 ;
}
```
Donc, en résumé, une lvalue est tout ce qui correspond à un emplacement mémoire et qui peut se trouver sur le côté gauche d'une affectation (=).
|