diff --git a/Exercices/mcq-ex/qcm-3.rst b/Exercices/mcq-ex/qcm-3.rst index 111276317eef56e4c1c6c266c17d51a956b828b0..5d7ae8070159b89bc7567b70d2f9b869f8921860 100644 --- a/Exercices/mcq-ex/qcm-3.rst +++ b/Exercices/mcq-ex/qcm-3.rst @@ -231,14 +231,14 @@ Considérons le fragment de programme ci-dessous. Question 4. Initialisation des variables ---------------------------------------- -En C, une règle de bonne pratique est d'initialiser toutes les variables avant leur utilisation. Utiliser une variable qui n'a pas été correctement initialisée pour être une source de problèmes. Un étudiant a écrit les déclarations ci-dessous : +En C, une règle de bonne pratique est d'initialiser toutes les variables avant leur utilisation. Utiliser une variable qui n'a pas été correctement initialisée peut être une source de problèmes. Un étudiant a écrit les déclarations ci-dessous : .. code-block:: c int k=0; int i; short j; - float f; + float f=0.0; double d; char c[10]; char* string; @@ -255,57 +255,59 @@ En C, une règle de bonne pratique est d'initialiser toutes les variables avant .. positive:: - - la variable ``i`` est initialisée à la valeur ``0`` - - le pointeur ``string`` est initialisé à la valeur ``NULL`` - - ``c[2]`` contient le caractère ``'\0'`` - - Après exécution de ``malloc``, le contenu de l'adresse ``ptr+1`` est indéterminé + - la variable ``k`` est initialisée à la valeur ``0`` + - la variable ``f`` est initialisé à la valeur ``0`` + - la variable ``ptr`` est stockée sur la pile + - Après exécution de ``malloc``, le contenu de l'adresse ``ptr+1`` est indéterminé .. comment:: Pour des raisons d'efficacité, `malloc(3)`_ n'initialise pas à zéro les zones mémoires allouées, contrairement à `calloc(3)`_ .. positive:: - - la variable ``j`` est initialisée à la valeur ``0`` - - le pointeur ``v`` est initialisé à la valeur ``NULL`` - - ``c[4]`` contient le caractère ``'\0'`` - - Après exécution de ``malloc``, le contenu de l'adresse ``ptr+4`` est indéterminé + - la variable ``d`` contient une valeur indéterminée + - le pointeur ``v`` contient une valeur indéterminée + - ``c[9]`` va faire un accès mémoire sur la pile + - Après une exécution réussie de ``malloc``, le contenu de ``ptr`` est une adresse sur le tas - .. comment:: Pour des raisons d'efficacité, `malloc(3)`_ n'initialise pas à zéro les zones mémoires allouées, contrairement à `calloc(3)`_ + .. comment:: Le contenu de ``c`` est stocké sur la pile .. negative:: - - la variable ``f`` est initialisée à la valeur ``0.0`` - - le pointeur ``string`` n'a aucune valeur et n'est pas utilisable + - la variable ``f`` est initialisée à la valeur ``0.0`` + - le pointeur ``string`` n'est pas utilisable - ``c[2]`` contient le caractère espace - Après exécution de ``malloc``, l'adresse ``ptr+1`` contient le caractère ``'\0'`` - .. comment:: `malloc(3)`_ n'initialise pas la zone mémoire allouée. ``string`` contient ``NULL`` et ``c[2]`` le caractère ``'\0'`` + .. comment:: `malloc(3)`_ n'initialise pas la zone mémoire allouée. Le contenu de ``c`` est indéfini .. negative:: - la variable ``f`` est initialisée à la valeur ``0.0`` - le pointeur ``v`` n'a aucune valeur et n'est pas utilisable - - ``c[2]`` contient le caractère espace + - ``c[2]`` contient le caractère ``'\0'`` - Après exécution de ``malloc``, l'adresse ``ptr`` contient le caractère ``'\0'`` + .. comment:: `malloc(3)`_ n'initialise pas la zone mémoire allouée. Le contenu de ``c`` est indéfini + .. negative:: - la variable ``f`` est initialisée à la valeur ``0.0`` - - le pointeur ``string`` est initialisé à ``NULL`` - - ``c[10]`` contient le caractère espace - - Après exécution de ``malloc``, l'adresse ``ptr+3`` contient le caractère ``'\0'`` + - la variable ``j`` contient une valeur indéterminée + - le pointeur ``string`` contient une valuer indéterminée + - Après une exécution réussie de ``malloc``, le contenu de ``ptr`` est une adresse sur la pile - .. comment:: ``c[10]`` est hors du tableau ``c``. `malloc(3)`_ n'initialise pas la zone mémoire allouée. + .. comment:: `malloc(3)`_ n'initialise pas de zone mémoire sur la pile. .. negative:: - la variable ``f`` est initialisée à la valeur ``0.0`` - - le pointeur ``v`` est initialisé à ``NULL`` - - ``c[6]`` contient le caractère ``'\0'`` + - la variable ``i`` contient une valeur indéterminée + - la variable ``d`` contient une valeur indéterminée - Après exécution de ``malloc``, l'adresse ``ptr+5`` contient le caractère ``'\0'`` .. comment:: `malloc(3)`_ n'initialise pas la zone mémoire allouée. De plus, ``ptr+5`` se trouve en dehors de la zone mémoire allouée par `malloc(3)`_