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