Académique Documents
Professionnel Documents
Culture Documents
et synonymes
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 ? ?
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)
Initialisation d’une structure
struct date
{
unsigned short jour;
char mois[10];
unsigned short annee;
};
struct date d1= {15,"Novembre", 2013};
Accès aux champs d’une structure
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);
Exemple de saisie et affichage d’une structure
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
Exemple de saisie et d’affichage d’une structure
Saisie
printf ("Entrez respectivement les champs de l’article ");
scanf("%d %s %d %f",&art.numero,art.nom,&art.qte_stock,&art.prix);
Affichage
struct foo{
int a;
Résultat
char b;
float c; };
0xbfc98bb4
int main(int argc,char* argv[]){
0xbfc98bb8
struct foo f;
0xbfc98bbc
printf("%p\n",&(f.a));
0xbfc98bb4
printf("%p\n",&(f.b));
printf("%p\n",&(f.c));
printf("%p\n",&f);
return 0; }
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
Exemple de Saisie et d’affichage via un pointeur
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 :
conge conges[50] ;
Manipulation des structures
Etudiant E1,E2;
E2=E1; // est une instruction valide qui recopie
// tous les champs de E1 dans les champs de E2
if(E1==E2) ou if(E1!=E2)
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);
}
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);
}
Fonctions et structures
enreg renvoiEnreg(...)
{ struct enreg s ; /* structure locale a fct */
.....
return s ; /* dont la fonction renvoie la valeur */
}