Que font ces lignes de code ?
int main() { int x = 5; &x = 18; *x = 10; int *y = 0; &y = 18; *y = 10; return 0; }
- A. Le code contient des erreurs de compilation dues à l'assignation incorrecte d'adresses et à la déréférence de variables non pointeurs.
- B. Le code provoquera une erreur de segmentation à l'exécution en raison de la déréférence d'un pointeur NULL.
- C. Le code ne compile pas car il tente d'assigner des valeurs entières à des adresses mémoire.
- D. Le code ne fait rien car les erreurs de compilation empêchent son exécution.
Fait une schéma mémoire.
Expliqué les différentes lignes.
Que font ces lignes de code ?
int a = 0xffffffff; void *ptr = (void*)&a; *(char*)ptr = 8;
- A) Elles changent la valeur de a (int) à 8 (donc 4 octets modifiés)
- B) Elles changent le premier octet de a : 0x08ffffff
- C) Elles changent le dernier octet de a : 0xffffff08
- D) Elles provoquent une erreur de compilation
- E) Autre chose ?
Quelle sera la sortie du programme suivant ?
int main() { int x = 5; int *ptr = &x; *ptr = 10; printf("%d\n", x); return 0; }
- A) 5
- B) 10
- C) Erreur de segmentation
- D) Ça ne compile pas
Que fait le code suivant ?
void A(int val) { val = 42; } int B(int val) { return val+12; } void C(int *ptr) { *ptr = 20; } int main() { int a = 15; A(a); printf("%d\n", a); B(&a); printf("%d\n", a); C(a); printf("%d\n", a); return 0; }
- A) Il affiche 42, 54, 20
- B) Il affiche 15, 27, 20
- C) Il affiche 15, 27, 27
- D) Il provoque une erreur de compilation
- E) Autre ?
Quelle sera la sortie du programme suivant ?
int main() { int arr[5] = {1, 2, 3, 4, 5}; int *ptr = arr + 2; printf("%d\n", *ptr); return 0; }
- A) 1
- B) 2
- C) 3
- D) 4
Que fait le code suivant ?
int main() { char str[] = "Hello"; char *ptr = str; while (*ptr != '\0') { *ptr = *ptr + 1; ptr++; } printf("%s\n", str); return 0; }
- A) Il affiche "Hello"
- B) Il affiche "Ifmmp"
- C) Il provoque une erreur de segmentation
- D) Il ne compile pas