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