0% ont trouvé ce document utile (0 vote)
24 vues4 pages

Revision Pointeurs Structures

Le document traite des pointeurs, structures, chaînes de caractères et allocation dynamique en C. Il explique la définition, la syntaxe, l'initialisation et l'arithmétique des pointeurs, ainsi que la création et l'accès aux structures et tableaux de structures. Il aborde également les chaînes de caractères, les fonctions utiles, et les méthodes d'allocation dynamique de mémoire avec des exemples pratiques et des exercices.

Transféré par

omaromarstm0805
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
24 vues4 pages

Revision Pointeurs Structures

Le document traite des pointeurs, structures, chaînes de caractères et allocation dynamique en C. Il explique la définition, la syntaxe, l'initialisation et l'arithmétique des pointeurs, ainsi que la création et l'accès aux structures et tableaux de structures. Il aborde également les chaînes de caractères, les fonctions utiles, et les méthodes d'allocation dynamique de mémoire avec des exemples pratiques et des exercices.

Transféré par

omaromarstm0805
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Révision Complète : Pointeurs, Structures, Chaînes et Allocation

Dynamique

1. Les Pointeurs
**Définition**
Un pointeur est une variable qui contient l'adresse mémoire d'une autre variable.

```c
int a = 5;
int* p = &a; // p pointe vers a
```

**Syntaxe de déclaration**
```c
<type> *NomPointeur;
```
Exemple :
```c
int *pNombre;
float *pFloat;
```

**Initialisation**
Toujours initialiser à `NULL` si non utilisé :
```c
int *p = NULL;
```

**Accès au contenu pointé**


- `*p` donne la valeur de la variable pointée.
- `&var` donne l'adresse de `var`.

**Exemple complet**
```c
int n = 10;
int* p = &n;
printf("%d", *p); // Affiche 10
*p = 20;
printf("%d", n); // Affiche 20
```

**Pointeurs et Tableaux**
Un tableau est un pointeur sur son premier élément :
```c
int tab[5] = {1,2,3,4,5};
int *p = tab;
```

**Arithmétique des pointeurs**


- `p++` : Avance au prochain élément.
- `p+n` : Avance de `n` éléments.

2. Structures et Tableaux de Structures


**Définition d'une Structure**
```c
struct Etudiant {
char nom[30];
int age;
float moyenne;
};
```

**Avec typedef**
```c
typedef struct {
char nom[30];
int age;
float moyenne;
} Etudiant;
```

**Accès aux champs**


- `[Link]` pour structure
- `p->age` pour pointeur sur structure

**Structures imbriquées**
```c
struct Date {int jour, mois, annee;};
struct Livre {char titre[50]; struct Date edition;};
```

**Tableaux de Structures**
```c
Etudiant classe[30];
classe[0].age = 22;
```
3. Chaines de Caractères
**Déclaration**
```c
char nom[20] = "Bonjour";
```

**Accès aux caractères**


```c
nom[0] = 'S'; // nom devient "Sonjour"
```

**Fonctions utiles**
- `strlen`, `strcpy`, `strcat`, `strcmp`

**Tableaux de chaines**
```c
char jours[7][10] = {"lundi", "mardi", ...};
printf("%s", jours[0]);
```

4. Allocation Dynamique
**Pourquoi?**
- Taille inconnue à la compilation
- Optimiser l'utilisation mémoire

**Fonctions**
- `malloc`, `calloc`, `realloc`, `free`

**Exemples**
```c
int *tab = (int *) malloc(5 * sizeof(int));
float *tab = (float *) calloc(10, sizeof(float));
tab = realloc(tab, 20 * sizeof(int));
free(tab);
```

Exercices pratiques
**Exercice 1**
Créer un pointeur sur int, stocker 30 et afficher.
```c
int n = 30;
int* p = &n;
printf("%d", *p);
```
**Exercice 2**
Créer un tableau dynamique de 10 flottants :
```c
float *tab = (float *) calloc(10, sizeof(float));
```

**Exercice 3**
Déclarer une structure Livre avec titre et année :
```c
typedef struct {char titre[50]; int annee;} Livre;
```

Mini-Quiz
1. Quel est l'intérêt d'un pointeur ?

2. Comment accéder au champ `age` d'une structure via pointeur ?

3. Quelle est la différence entre `malloc` et `calloc` ?

4. Que fait `free` ?

5. Comment concaténer deux chaînes en C ?

Astuces pour réussir l'examen


- Toujours initialiser tes pointeurs.

- Toujours libérer la mémoire allouée.

- Utiliser `typedef` pour simplifier.

- Tester NULL après une allocation.

- S'entraîner aux pointeurs + tableaux.

Vous aimerez peut-être aussi