Structures et Unions

Intéressons-nous à présent à la notion de structure, qui représente une collection de données liées dont les types peuvent être différents. La notion d'union définit,elle, une structure de données contenant des membres multiples, mais qui partagent une même zone de mémoire à la différence des membres d'une structure.Une union permet ainsi à des données distinctes de partager dans le même temps une même portion de mémoire.

Exemple:

struct individu
{	
	char *nom;
	char *prenom;
	int age;
	char sexe;
	char *caractère;
	float compte;
	char adresse[3];
}
Une structure est déclaré par le mot-clef "struct" suivi d'un nom facultatif, ici individu. Alors individu.age désigne l'élément age dans une structure bâtie sur le modèle individu

Exemple concret:

struct id
{
	char *nom;
	char *prenom;
	int age;
	char sexe;
};

struct id  fiche1={"DUVERNAY","LIONEL",22,'M'};

main()
{
printf("\n contenu de la fiche 1");
printf("\n\n NOM:%s  PRENOM:%s", fiche1.nom, fiche1.prenom);
printf("\n AGE:%d", fiche1.age);
printf("\n SEXE:%s \n", (fiche1.sexe=='M')? "MASCULIN" : "FEMININ);
}

L'union est une variable qui peut contenir, à des instants différents, des objets de types différents et même de tailles différentes. Pour comprendre l'utilité de l'union, imaginons un programme qui puisse recevoir deux arguments : le premier argument désigne le type du second; le programme doit imprimer le contenu de ce second argument.
test(type, arg);
char type;
union
{
	char *caractère;
	int entier;
} arg;
switch (type)
{
	case ' c' :
		printf( "\n %s, arg.caractère);
		break;
	case ' d ':
		printf ( "\n %d, arg.entier);
		break;
	default:
		printf ( "\n ERREUR : LE TYPE DOIT ETRE c OU d \n);
		break;
}
}
La syntaxe et les règles d'utilisation de l'union sont celles de la structure.


Menu Principal