Академический Документы
Профессиональный Документы
Культура Документы
Plan
1. Structures de donnes du C
2. Allocation dynamique
4. Complments
1. Structures de donnes du C
Types du C
Types simples :
int, char, float, double, short, long, void
Types complexes :
Unions
Enumrations
Pointeurs
Tableaux
Structures
Structure
Mot-clef : struct
Structures
Exemples :
struct {char* nom; int age;} perso ;
struct personne {char* nom; int age;};
struct personne p;
struct identite {struct personne pe; char* prenom;};
structure
struct identite id;
void main() {
perso.nom="Durand"; perso.age=20;
printf("nom: %s, age: %d\n",perso.nom,perso.age);
p.nom="Martin"; p.age=19;
printf("nom: %s, age: %d\n",p.nom,p.age);
id.pe=p; id.prenom="Jacques";
printf("nom: %s, prenom: %s, age: %d\n",id.pe.nom,id.prenom,id.pe.age);
}
Unions
Unions
Unions
Exemples
y.connu.nom="Martin"; y.connu.age=20;
printf("connu: {%s, %d} ...",y.connu.nom,y.connu.age);
printf("et inconnu associe: %c\n",y.inconnu);
}
Alexandre Guitton - Architecture des systm
es
Enumrations
10
Pointeurs et tableaux
Pointeur
Tableau
11
Exemple
Dclaration
int t[5];
// rappel : indiage de 0 4!
int u[4]={0,1,2,3};
int w[2][2];
int x[3][2]={{0,1},{2,3},{4,5}};
Utilisation
for (i=0;i<5;i++) t[i]=(i+1)*(i+1);
for (i=1;i<5;i++) t[i]=t[i]+t[i-1];
for (i=0;i<3;i++)
for (j=0;j<2;j++)
w[i][j]=10*i+j;
Alexandre Guitton - Architecture des systm
es
12
Pointeurs et tableaux
(en assembleur)
13
Pointeurs de fichiers
Fichiers en C
Exemple :
FILE * f=NULL;
int n;
f = fopen(numbers.txt, r);
if (f!=NULL) {
while (!feof(f)) {
fscanf(f, %d, &n);
printf(%d\n, n);
}
}
fclose(f);
14
Pointeurs de paramtres
Fichiers en C
15
2. Allocation dynamique
16
Allocation dynamique
Allocation statique
Allocation dynamique
Libration dynamique
17
// dclaration
// allocation
// vrification
// utilisation ...
// x pointe sur y
// libration de la mmoire
Alexandre Guitton - Architecture des systm
es
18
19
20
Le tas
Remarques
21
Comportements imprvisibles en C
22
3. Structures de donnes
algorithmiques en C
23
La pile
Remarques
24
La pile
Exemple :
25
Drcursivation
Toujours possible
Pour les fonctions rcursives terminales, la
drcursivation peut se faire sans pile
Pour les autres fonctions rcursives, il faut souvent
programmer une structure de pile (cf algorithmique)
Exemple :
a=2, b=3; c=1;
for (int i=0;i<b;i++) c=c*a;
26
Implmentation de pile en C
27
Implmentation de file en C
Avec un tableau ?
28
4. Complments
29
Instruction goto
programmation spaghetti
30
Divers
Pointeurs de fonctions
Le mot-clef register
31
(tapes de la compilation)
32