« Conseils de codage en C/Recherche des erreurs » : différence entre les versions

Contenu supprimé Contenu ajouté
Thierry46 (discussion | contributions)
macros de moins de 5 instructions
Thierry46 (discussion | contributions)
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)]]