From 6ba6f504d1e6f2ec7ba1b7889738470b8a8073c0 Mon Sep 17 00:00:00 2001
From: Orestis Malaspinas <orestis.malaspinas@hesge.ch>
Date: Wed, 14 Oct 2020 11:00:10 +0200
Subject: [PATCH] added consts

---
 base_5.md | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/base_5.md b/base_5.md
index 52c88bd..31131bf 100644
--- a/base_5.md
+++ b/base_5.md
@@ -45,6 +45,44 @@
 - 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**.
 
+# Pointeurs et `const`
+
+## Deux niveaux de constance
+
+- Le mot clé `const` permet de déclarer des valeurs "constantes" qui ne changeront plus en cours d'exécution du programme.
+- Mais qu'est-ce que cela veut dire pour les pointeurs?
+
+    ```C
+    int n = 12;
+
+    const int *p = &n; // la valeur *p est const, p non
+    int const *p = &n; // la valeur *p est const, p non
+    int *const p = &n; // la valeur p est const, *p non
+    const int *const p = &n; // la valeur p et *p sont const
+    ```
+
+## Exemples
+
+```C
+int n = 12; int m = 13;
+
+const int *p = &n; // la valeur *p est const, p non
+*p = m; // erreur de compilation.
+p = &m; // OK
+
+int const *p = &n; // la valeur *p est const, p non
+*p = m; // erreur de compilation.
+p = &m; // OK
+
+int *const p = &n; // la valeur p est const, *p non
+*p = m; // OK
+p = &m; // erreur de compilation.
+
+const int *const p = &n; // la valeur p et *p sont const
+*p = m; // erreur de compilation.
+p = &m; // erreur de compilation.
+```
+
 # La fonction `sizeof()` (1/2)
 
 - La fonction `sizeof()`{.C} permet de connaître la taille en octets:
-- 
GitLab