variables const globales et locales
Bonjour
apres mes test sur les const comme parametre de fonction ( voir http://www.developpez.net/forums/sho...d.php?t=498246) je me suis mis a tester les variables const
ci dessous un code qui utilise une variable globale avec const et une variable locale avec const
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
char const g_string[]="bonjour";
void update ( char * buffer)
{
buffer[0] = 'l';
}
int main()
{
char const string[]="mokhtar";
char * mystring = (char *)string;
update(mystring);
printf ( "result = %s\n", string);
mystring = (char *)g_string;
update(mystring);
printf ( "result = %s\n", g_string);
return 0 ;
} |
Resultat
Citation:
result = lokhtar
Segmentation fault (core dumped)
donc la variable locale est modifiee mais la tentative de modifications de la variable globale provoque un segmentation fault
alors j'ai essaye avec une variable locale statique
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void update ( char * buffer)
{
buffer[0] = 'l';
}
int main()
{
char static const string[]="mokhtar";
char * mystring = (char *)string;
update(mystring);
printf ( "result = %s\n", string);
return 0 ;
} |
la le segmentaon fault etait au rendez vous
Conclusion : const n'est efficace que avec les variables globales et les variables locales statiques ( cad les variables qui ne sont pas alloues dans la pile)