Chapitre précédant

Structures et unions

En C il est possible de créer des variables complexes à partir des types de bases (int, float, etc)
pour cela il vous suffit de créer soit des structures soit des unions où même les deux en même temps.

Les structures


Les structures permettent souvent de manipuler une variable plus complexe pour par exemple faciliter le passage des paramètres par exemple.
Avant de vous servir de structures vous aurez besoin de les définir pour cela il vous suffit de taper par exemple:

struct MA_STRUCTURE{
int entier;
float reel, autre_reel;
};


n'oubliez pas le point virgule lorsque vous fermez l'accolade.
vous pourrez ensuite à partir de cette structure créer une variable de type MA_STRUCTURE, cette variable contiendra en fait 3 sous variables. chacune de ces sous variables pourra être manipulée comme une unique variable en écrivant: variable.element .
ex:

// définition d'une variable de type MA_STRUCTURE
MA_STRUCTURE var;
// attribution d'une valeur à chaque élément de la variable
var.entier=14;
var.reel=11.0f;
var.autre_réel=101.0f;
// création d'un pointeur vers variable var
MA_STRUCTURE *p_var=var;
// accès à un élément de la variable pointée (2 méthodes possibles)
printf("entier= %d ; reel= %f",(*p_var).entier,p_var->reel);


Comme vous avez pu voir il existe 2 méthodes différentes pour atteindre un élément d'une variable pointée:
(*p_var).entier équivaut à p_var->entier

Vous pouvez par exemple créer une structure date et une structure heure puis une troisième structure contenant les deux autres ainsi:

struct DATE{
int annee, mois, jour;
};

struct HEURE{
int heure, minute, seconde;
};

struct DATE_HEURE{
struct DATE jour;
struct HEURE heure;
};


afin d'atteindre l'élément minute il suffira de faire ainsi:

DATE_HEURE temps;
temps.heure.minute=10;


Les Unions


Les unions ressemblent aux structures, elles s'utilisent comme les structures mais ne fonctionnent pas pareil, elle permettent de créer une variable dont la taille sera celle du plus grand élément de l'union et lorsqu'un élément sera modifié, tous les autres le seront aussi.


Chapitre précédant

Copyright "NOS Corporation", tous droits réservés
pour me contacter polo_asm@hotmail.fr
Valid XHTML 1.0 Strict