Académique Documents
Professionnel Documents
Culture Documents
Synonymes
Unions
Sommaire
1 Structures
2 Synonymes
3 Unions
Structures
Synonymes
Unions
Sommaire
1 Structures
2 Synonymes
3 Unions
Structures
Synonymes
Unions
Introduction
Types de base du C
I int, float, char
I les tableaux statiques
I les pointeurs sur ces types
Nouveau types ? ?
I une personne : un nom, un âge, un numéro de téléphone
I une date : jour, un mois, une année
I et les tableaux ? ?
Définition
struct Personne
{
char Nom[20]; //
int Age;
float taille;
}p1,tab[10];//tab est une variable de type tableau de 10 elements
// (de type Personne)
Structures
Synonymes
Unions
struct date
{
unsigned short jour;
char mois[10];
unsigned short annee;
};
struct date d1= {15,"Novembre", 2013};
Structures
Synonymes
Unions
nom_variable.nom_champ
struct personne P;
P.nom="Alami";
P.prenom="Ahmed";
P.age=20;
printf ("Cette personne s’appelle %s %s et a %d ans", P.nom ,
P.prenom , P.age);
Structures
Synonymes
Unions
struct article{
int numero; //un numero qui identifie l’article
char nom[20];
int qte_stock; // quantite disponible en stock
float prix;
};
Exercice :
Saisissez les champs de la structure art, puis affichez son
contenu
Structures
Synonymes
Unions
Saisie
printf ("Entrez respectivement les champs de l’article ");
scanf("%d %s %d %f",&art.numero,art.nom,&art.qte_stock,&art.prix);
Affichage
Alignement en mémoire
Structures
Synonymes
Unions
Structures et pointeur
Dans le cas d’une variable structure de type pointeur, on
utilise en général l’opérateur -> pour accéder aux champs
nom_variable ->nom_champ
Exemple
date d;
date *pd= &d;
pd->jour=2; // ou bien (*pd).jour (les parentheses sont ici
// indispensables)
Exercice :
refaites la saisie et l’affichage en utilisant le pointeur pt_art
Remarque :
il faut d’abord initialiser le pointeur pt_art
Structures
Synonymes
Unions
Saisie
struct article art,*pt_art;
pt_art=&art;
printf ("Entrez respectivement les champs de l’article ");
scanf("%d %s %d %f",&pt_art ->numero,pt_art ->nom,
&pt_art ->qte_stock,&pt_art ->prix);
Affichage
Remarque :
struct conge conges[50] ;
Structures
Synonymes
Unions
Structures récursives
Sommaire
1 Structures
2 Synonymes
3 Unions
Structures
Synonymes
Unions
Exemples de typedef
Type synonyme d’un type tableau :
typedef float tableau[10];
tableau T; // T est un tableau de 10 reels
typedef int matrice[4][5];
matrice A; // A est une matrice d’entiers de 4 lignes et 5 colonnes
Fonctions et structures
Fonctions et structures
Exemple 1
#include <stdio.h>
typedef struct {
int a ;
float b ;
}enreg;
void fct (enreg s)
{
s.a = 0; s.b=1;
printf ("dans fct : %d %f", s.a, s.b);
}
main(){
enreg x ;
x.a = 1; x.b = 12.5;
printf ("avant appel fct : %d %f",x.a,x.b);
fct (x) ;
printf ("au retour dans main : %d %f", x.a, x.b);
}
Structures
Synonymes
Unions
Fonctions et structures
Exemple 2
#include <stdio.h>
typedef struct{
int a;
float b;
}enreg;
void fct (enreg * ads)
{
ads->a = 0 ; ads->b = 1;
printf ("dans fct : %d %f", ads->a, ads->b);
}
main(){
enreg x;
x.a = 1; x.b = 12.5;
printf ("avant appel fct : %d %f",x.a,x.b);
fct (&x);
printf ("au retour dans main : %d %f", x.a, x.b);
}
Structures
Synonymes
Unions
Fonctions et structures
Retour d’une structure
I En C, on peut réaliser des fonctions qui fournissent en retour
la valeur d’une structure
enreg renvoiEnreg(...)
{ struct enreg s ; /* structure locale a fct */
.....
return s ; /* dont la fonction renvoie la valeur */
}
Sommaire
1 Structures
2 Synonymes
3 Unions
Structures
Synonymes
Unions
union nom_union
{type1 nom_champ1;
type2 nom_champ2;
...
typeN nom_champN;
};
Exemple 1
typedef union
{
int entier;
float reel;
char carac;
}valeur;
valeur a;
Exemple
a.entier;
a.reel;
a.carac;
&a.entier == (int*)&a.reel
&a.entier == (int*)&a.carac
Exemple 2
typedef struct
{
float abscisse ;
float ordonnee ;
}cartesien ;
typedef struct
{
float r;
double theta ;
}polaire;
typedef union
{
cartesien cart ;
polaire pol;
}coord;
coord c;
...
Structures
Synonymes
Unions
Exemples
Remarques
Les valeurs associées aux énumérateurs sont, par défaut,
définies de la manière suivante : la première constante est
associée à la valeur 0, les constantes suivantes suivent une
progression de 1.
Il est possible de fixer une valeur à chaque énumérateur en
faisant suivre l’énumérateur du signe égal et de la valeur
entière exprimée par une constante ; si l’énumérateur suivant
n’est pas associé à une valeur, la progression de 1 reprend à la
valeur courante
enum couleurs{
rouge,vert,bleu // rouge correspond a la valeur 0,
}rvb; // vert a 1 et bleu a 2
Structures
Synonymes
Unions
Exemples
Exemple 2
enum jour
{Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche};
enum jour j1, j2, j ;
j1 = Lundi ;
j2 = j1 ;
Comparaison
Incrémentation, décrémentation
j2 = Dimanche ; j2-- ;
for (j = Lundi ; j<Samedi ; j++)