Une structure?
C'est assez simple, en fait au lieu de devoir appellé les variables une à une, une structure est un groupement de variables, ça permet entre autre, de faire des listes chaînées, qui sont très utiles pour stocker des grands tableaux qui se modifient en permanence, et donc pour faire des tris par insertion par exemple.
Je vais illustrer les structures, rapidement, en faisant une structure personnage. On va dire d'ailleurs qu'une Structure c'est comme un objet dans Game Maker, qui ne peut cependant pas prendre de code, il peut seulement stocker des variables mais c'est pour illustrer.
Donc:
On met toujours une majuscule pour les noms de structure, c'est une règle non obligatoire mais la plupart des programmeurs font ainsi, dans l'idée de bien reconaîtres variables et structures de variables.
- Code:
-
struct Personnage
{
char nom[20];
int x;
int y;
int force;
};
Une structure se définie en dehors des fonctions, en général on les défini dans des .h, mais pour un rapide test tu peux le faire au dessus du main.
On vient en fait de créer un nouveau type de variable, de nom: struct Personnage.
Ce que l'on peut faire c'est carrément créer un nouveau type, plutôt que de toujours devoir écrire struct Personnage dans notre code, on pourra par exemple juste ecrire: Sperso pour le type de structure qu'on créera.
Ainsi avant ou après la définition de la structure on écrira:
- Code:
-
typedef struct Personnage Sperso;
On aura ainsi un alias pour notre nouveau type de variable, qui n'est en fait qu'un groupement de plusieurs variables.
Ensuite dans les fonctions, dans main par exemple, on va créer une structure du type qu'on a défini. C'est un peu comme l'instance d'un objet, cependant on utilise pas ce vocabulaire pour une structure. Il faut y faire attention.
- Code:
-
int main (void)
{
Sperso MonPersonnage;/* Créer une structure de type Sperso et de nom MonPersonnage... */
/ *On va maintenant entrer les valeurs qui seront contenues dans les différentes variables de MonPersonnage. */
MonPersonnage.nom = "Bryan";
MonPersonnage.x = 12;
MonPersonnage.y = 23;
MonPersonnage.force = 2;
/* Nous allons maintenant les afficher */
printf("%s - %d - %d - %d",MonPersonnage.nom,MonPersonnage.x,MonPersonnage.y,MonPersonnage.force);
return 0;
}
Voilà, cela affichera donc les valeurs stockées dans la structure, il faut savoir que les structures peuvent paraître inutiles au premier abord, mais au contraire cela permet beaucoup de chose: trimbaler qu'une variables lors des appels de fonction, si on créé un thread POSIX on ne peut passer qu'un argument, donc qu'une variable, en faisant une structure on peut passer plusieurs variables, en faisant passer la structure.
C'est également très utile pour toutes les données vouées à être triées, car on peut faire des listes chaînées (des structures reliées entre elles par un pointeur vers la structure suivante et un pointeur vers la précédente).
Voili voilou, si jamais tu as encore des question, ou si je me suis trompé dans la syntaxe, n'hésites pas.