« 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' ===