From e3e335ed04beb73b4ab05ceae4fb7f8e3683e222 Mon Sep 17 00:00:00 2001 From: Orestis <orestis.malaspinas@hesge.ch> Date: Mon, 23 Sep 2019 14:33:04 +0200 Subject: [PATCH] ajout sizeof --- base_2.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/base_2.md b/base_2.md index 8ec43d3..668f211 100644 --- a/base_2.md +++ b/base_2.md @@ -25,7 +25,9 @@ - Une variable, `type a = valeur`{.C}, possède: - un type (`char`{.C}, `int`{.C}, ...), - un contenu (une séquence de bits qui encode `valeur`{.C}), - - une adresse mémoire (accessible via `&a`{.C}). + - une adresse mémoire (accessible via `&a`{.C}), + - une portée. + # Représentation des variables en mémoire (2/N) @@ -70,6 +72,27 @@ - Permettent d'avoir plusieurs chemins d'accès à une valeur. - Lire **et** écrire en même temps dans un bout de mémoire devient possible: **danger**. +# La fonction `sizeof()` (1/N) + +- La fonction `sizeof()`{.C} permet de connaître la taille en octets: + - d'une valeur, + - d'un type, + - d'une variable. +- Soit `int a = 2`{.C}, sur l'architecture x86_64 que vaut: + - `sizeof(a)`{.C}? + - `sizeof(&a)`{.C}? +- Soit `char b = 2`{.C}, + - `sizeof(b)`{.C}? + - `sizeof(&b)`{.C}? + +# La fonction `sizeof()` (2/N) + +- Réponses: + - `sizeof(a) == 4`{.C}, `int`{.C} entier 32 bits. + - `sizeof(&a) == 8`{.C}, une adresse est de 64 bits. + - `sizeof(b) == 1`{.C}, `char`{.C} entier 8 bits. + - `sizeof(&b) == 8`{.C}, une adresse est de 64 bits. + # Les fonctions (1/N) -- GitLab