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

pointeurs avancent

parent eefc9c33
No related branches found
No related tags found
No related merge requests found
......@@ -33,29 +33,47 @@
# Les pointeurs (1/N)
- Un poiteur est une adresse mémoire.
- Un pointeur est une adresse mémoire.
```C
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 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
char val = 'a';
char *c = &val; // c contient l'adresse de val (pointe vers 'a')
char d = *c; // d contient une copie de 'a'
char *c; // déclaration pointeur de char
*c = 'a'; // assignation de 'a' dans la valeur pointée par c
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, 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)
- 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:
```C
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment