Compiler et analyser le code suivant
Lancé votre program avec un chiffre différents. Que ce passe t'il quand vous lancé votre program, par exemple ``./main 0'' puis ``./main 1'' ou encore ``./main 2''.
int main(int argc, char *argv[]) { int a = 5000; int b = 23; int c[1] = {1}; int d[1] = {2}; printf("Before: a = %d, b = %d, c[0] = %d, d[0] = %d\n", a, b, c[0], d[0]); int index = atoi(argv[1]); c[index] = 42; printf("After: a = %d, b = %d, c[0] = %d, d[0] = %d\n", a, b, c[0], d[0]); return 0; }
Questions :
- Quelle sont vos observations sur les données modifiés ?
- Ces données sont t-elle dans la stack ou dans la heap ?
Compiler et analyser le code suivant
int main(int argc, char *argv[]) { int a = 5000; int b = 23; int c[1] = {1}; int d[1] = {2}; printf("Before: a = %d, b = %d, c[0] = %d, d[0] = %d\n", a, b, c[0], d[0]); *((&b) + 1) = 80; // Quelle variable est impacté ? *((&b) - 1) = 42; // Quelle variable est impacté ? printf("After: a = %d, b = %d, c[0] = %d, d[0] = %d\n", a, b, c[0], d[0]); return 0; }
Questions :
- Que fait le code suivant : &b
- Que fait le code suivant : (&b)+1
- Que fait le code suivant : *((&b)+1)
- En déduire ce qui ce passe en mémoire, fait une représentation de la stack