Click here to print

Structures

Les structures servent à créer des types en composants plusieurs autres types.
struct nom{

int a;
char b;
machin c;

}
Défini le nouveau type "struct nom". La taille de ce nouveau type sera typedef(struct nom). Une structure ne peut pas se contenir elle même :
struct nom{

int a;
char b;
machin c;
struct nom d; /* impossible */

}
Par contre elle peut contenir un pointeur vers une zone de type struct nom :
struct nom{

int a;
char b;
machin c;
struct nom * d; /* oui */

}
Les structures se comportent comme les variables (et pas comme les tableaux). Ca veut dire que si vous passé une structure en paramètre à une fonction, celle-ci recoit en réalité une copie locale. Les modifications ne seront pas visible, sauf pour les champs de la structure qui sont des pointeurs. Par facilité d'écriture, il est également possible de donner un nom au nouveau type défini par la structure :
typedef struc _nom{
...
}nom;

_nom et nom doivent être différents. Quand la structure ne contient pas de pointeur vers une structure de même type, le _nom devient alors optionel :
typedef struc {

}nom;

Allocation dynamique

Il est possible de demander de la mémoire en dehors de la pile, et de récupérer un pointeur vers cette mémoire. Ca se fait avec la fonction malloc. Voir le cours !

Exercices

  1. Dessiner la pile qui correspond au code suivant :