Skip to content
Snippets Groups Projects
Commit 23bdfd0c authored by orestis.malaspin's avatar orestis.malaspin
Browse files

pointeurs avancent

parent eefc9c33
Branches
No related tags found
No related merge requests found
...@@ -33,29 +33,47 @@ ...@@ -33,29 +33,47 @@
# Les pointeurs (1/N) # Les pointeurs (1/N)
- Un poiteur est une adresse mémoire. - Un pointeur est une adresse mémoire.
```C ```C
type *id; type *id;
``` ```
- Pour pouvoir interprêter le contenu de ce qu'il pointe, il doit être typé. - Pour interprêter le contenu de ce qu'il pointe, il doit être typé.
- Un pointeur n'est rien d'autre qu'un entier (64bit sur x86-64, soit 8 octets). - Un pointeur n'est rien d'autre qu'un entier (64bit sur x86-64, soit 8 octets).
- Un poiteur peut être **déréférencé**: on accède à la valeur sur laquelle pointe l'adresse mémoire. - Un pointeur peut être **déréférencé**: on accède à la valeur située à l'adresse mémoire sur laquelle il pointe.
```C ```C
char val = 'a'; char *c; // déclaration pointeur de char
char *c = &val; // c contient l'adresse de val (pointe vers 'a') *c = 'a'; // assignation de 'a' dans la valeur pointée par c
char d = *c; // d contient une copie de 'a' c = 1000; // on modifie l'adresse pointée par c
char d = *c; // on essaie de lire la valeur pointée par c... argl!
``` ```
- `NULL`{.C} (ou `0`{.C}) est la seule adresse **toujours** invalide.
# Les pointeurs (2/N) # Les pointeurs (2/N)
![Les pointeurs, le déréférencement, et la mémoire.](figs/memory_deref.svg){#fig:memory width=100%} ![Les pointeurs, le déréférencement, et la mémoire.](figs/memory_deref.svg){#fig:memory width=100%}
# Les pointeurs (3/N)
- Permettent d'accéder à une valeur avec une indirection.
```C
int a = 2;
int *b = &a;
*b = 7; // on met 7 dans la case pointée par b
// ici a == 7 aussi
a = -2; // ici *b == -2 aussi
```
- 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**.
# Les fonctions (1/N) # Les fonctions (1/N)
- Chaque partie indépendante d'un programme se met dans une fonction. - Les parties indépendantes d'un programme sont mises dans des fonctions.
- Syntaxe: - Syntaxe:
```C ```C
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment