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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
donc la variable locale est modifiee mais la tentative de modifications de la variable globale provoque un segmentation faultresult = lokhtar
Segmentation fault (core dumped)
alors j'ai essaye avec une variable locale statique
la le segmentaon fault etait au rendez vous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ; }
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)
Partager