« Programmation C/Classe de stockage » : différence entre les versions
Contenu supprimé Contenu ajouté
m →Classe 'register' : Sur un PC (d'architecture AMD64????????), ilSSS sont au nombre de 13, dont seulement 4 servent au stockage (EAX,EBX,ECX,EDX). |
Balise : insanités |
||
Ligne 137 :
Cette dernière forme est néanmoins rarement usitée. En outre ce dernier exemple présente un autre problème qui est la modification d'une chaine de caractères « en dur », qui sont la plupart du temps placées dans la section lecture seule du programme et donc inaltérables.
Attention <code>const</code> n'est pas une protection réelle contre les changements de valeur, qu'elles proviennent d'un comportement indéfini, ou de constructions valides du C telle que
<source lang="c">
const char lettre = 'A';
memset(&lettre, 'B', 1);
putchar(lettre); /* affiche B */
</source>
En outre certaines constructions du C même si elles n'indiquent pas être <code>const</code> le sont effectiement.
<source lang="c">
int nombres[3] = {1, 2, 3};
int * autres_nombres;
nombres = autres_nombres; /* erreur à la compilation, l'addresse d'un tableau ne peut pas être modifié */
char * phrase = "Salut tout le monde !";
phrase[0] = 's'; /* erreur probable à l'exécution, une chaine de caractères littérale ne peut pas être modifiée */
</source>
=== Qualificateur 'volatile' ===
|