« Conseils de codage en C/Recherche des erreurs » : différence entre les versions
Contenu supprimé Contenu ajouté
macros de moins de 5 instructions |
Affectations et identificateurs de tableau |
||
Ligne 141 :
===Justification===
Rejette, dès la phase de compilation, certaines modifications abusives.
==Affectations et identificateurs de tableau==
Être prudent lors de l'utilisation des identicateurs de tableau et des pointeurs sur chaîne constante.
===Justification===
Les types int a[] et int* a sont complètement différents, même si, une fois déclarés, leur usage parait identique. Le programmeur doit être particulièrement vigilant : par exemple, beaucoup d’éditeurs de liens confondraient un int* a et un int a[] définis dans deux modules (.o) différents. Ceci est susceptible de provoquer une erreur fatale.
===Exemple===
Voici une illustration de la différence entre ces deux types [C FAQ] :
<source lang="C">
char a[] = "hello";
char* p = "hello";
</source>
La variable “ a ” occupe 6 octets dans l’espace de la mémoire dynamique. Cette zone sera désallouée lorsque la variable sortira de son espace de validité. La variable p occupe 4 octets (taille courante d’un pointeur). Elle est un pointeur qui référence une région de la mémoire non modifiable. Une nouvelle valeur peut être affectée à “p”, mais pas à “a”. En fait, un bon compilateur devrait imposer ici le type const char*.
[[Catégorie:Conseils de codage en C (livre)]]
|