Programmer en langage C
Table des matières
VIII
© Éditions Eyrolles
3
Quelques règles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.1 Arguments muets et arguments effectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.2 L’instruction return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.3 Cas des fonctions sans valeur de retour ou sans arguments . . . . . . . . . . . . . . . 99
3.4 Les anciennes formes de l’en-tête des fonctions . . . . . . . . . . . . . . . . . . . . . . . . 100
4
Les fonctions et leurs déclarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.1 Les différentes façons de déclarer (ou de ne pas déclarer) une fonction . . . . . . 101
4.2 Où placer la déclaration d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.3 À quoi sert la déclaration d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5
Retour sur les fichiers en-tête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6
En C, les arguments sont transmis par valeur . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7
Les variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.1 Exemple d’utilisation de variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.2 La portée des variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.3 La classe d’allocation des variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8
Les variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8.1 La portée des variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
8.2 Les variables locales automatiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
8.3 Les variables locales statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.4 Le cas des fonctions récursives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9
La compilation séparée et ses conséquences . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.1 La portée d’une variable globale - la déclaration extern . . . . . . . . . . . . . . . . . . . 111
9.2 Les variables globales et l’édition de liens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
9.3 Les variables globales cachées - la déclaration static . . . . . . . . . . . . . . . . . . . . 112
10 Les différents types de variables, leur portée et leur classe d’allocation . . . . . . 113
10.1 La portée des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
10.2 Les classes d’allocation des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
10.3 Tableau récapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
11 Initialisation des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
11.1 Les variables de classe statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
11.2 Les variables de classe automatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
12 Les arguments variables en nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
12.1 Premier exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
12.2 Second exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
7 Les tableaux et les pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1
Les tableaux à un indice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1.1 Exemple d’utilisation d’un tableau en C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1.2 Quelques règles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2
Les tableaux à plusieurs indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
2.1 Leur déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
2.2 Arrangement en mémoire des tableaux à plusieurs indices . . . . . . . . . . . . . . . . 124
Delannoy Livre.book Page VIII Mercredi, 6. mai 2009 4:25 16
Table des matières
VIII
© Éditions Eyrolles
3
Quelques règles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.1 Arguments muets et arguments effectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.2 L’instruction return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.3 Cas des fonctions sans valeur de retour ou sans arguments . . . . . . . . . . . . . . . 99
3.4 Les anciennes formes de l’en-tête des fonctions . . . . . . . . . . . . . . . . . . . . . . . . 100
4
Les fonctions et leurs déclarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.1 Les différentes façons de déclarer (ou de ne pas déclarer) une fonction . . . . . . 101
4.2 Où placer la déclaration d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.3 À quoi sert la déclaration d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5
Retour sur les fichiers en-tête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6
En C, les arguments sont transmis par valeur . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7
Les variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.1 Exemple d’utilisation de variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.2 La portée des variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.3 La classe d’allocation des variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8
Les variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8.1 La portée des variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
8.2 Les variables locales automatiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
8.3 Les variables locales statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.4 Le cas des fonctions récursives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9
La compilation séparée et ses conséquences . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.1 La portée d’une variable globale - la déclaration extern . . . . . . . . . . . . . . . . . . . 111
9.2 Les variables globales et l’édition de liens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
9.3 Les variables globales cachées - la déclaration static . . . . . . . . . . . . . . . . . . . . 112
10 Les différents types de variables, leur portée et leur classe d’allocation . . . . . . 113
10.1 La portée des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
10.2 Les classes d’allocation des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
10.3 Tableau récapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
11 Initialisation des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
11.1 Les variables de classe statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
11.2 Les variables de classe automatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
12 Les arguments variables en nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
12.1 Premier exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
12.2 Second exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
7 Les tableaux et les pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1
Les tableaux à un indice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1.1 Exemple d’utilisation d’un tableau en C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1.2 Quelques règles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2
Les tableaux à plusieurs indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
2.1 Leur déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
2.2 Arrangement en mémoire des tableaux à plusieurs indices . . . . . . . . . . . . . . . . 124
Delannoy Livre.book Page VIII Mercredi, 6. mai 2009 4:25 16
