Titre: Le langage C
Auteurs: Henri Garreta
Ecole: Université d’Aix-Marseille, Faculté des Sciences
Résumé: La transformation d’un texte écrit en langage C en un programme exécutable par l’ordinateur se fait en deux étapes : la compilation et l’édition de liens. La compilation est la traduction des fonctions écrites en C en des procédures équivalentes écrites dans un langage dont la machine peut exécuter les instructions. Le compilateur lit toujours un fichier, appelle fichier source, et produit un fichier, dit fichier objet…
Extrait du sommaire:
1 Elements de base 5
1.1 Structure générale d’un programme5
1.2 Considérations lexicales5
1.2.1 Presentation du texte du programme 5
1.2.2 Mots-cles 6
1.2.3 Identificateurs 6
1.2.4 Operateurs 6
1.3 Constantes litterales 7
1.3.1 Nombres entiers7
1.3.2 Nombres flottants7
1.3.3 Caractères et chaınes de caractères 7
1.3.4 Expressions constantes 8
1.4 Types fondamentaux 9
1.4.1 Nombres entiers et caractères9
1.4.2 Types enumeres1
1.4.3 Nombres flottants11
1.5 Variables 1
1.5.1 Syntaxe des declarations 1
1.5.2 Visibilite des variables 12
1.5.3 Allocation et duree de vie des variables13
1.5.4 Initialisation des variables 13
1.5.5 Variables locales statiques 14
1.5.6 Variables critiques14
1.5.7 Variables constantes et volatiles 5
1.6 Variables, fonctions et compilation separee 5
1.6.1 Identificateurs publics et prives 5
1.6.2 Declaration d’objets externes16
2 Operateurs et expressions 18
2.1 Generalites 18
2.1.1 Lvalue et rvalue8
2.1.2 Priorite des operateurs 19
2.2 Presentation detaillee des operateurs19
2.2.1 Appel de fonction () 9
2.2.2 Indexation [] 20
2.2.3 Selection 21
2.2.4 Selection dans un objet pointe -> 21
2.2.5 Negation ! 22
2.2.6 Complement à 1 ~22
2.2.7 Les celèbres ++ et – 22
2.2.8 Moins unaire – 23
2.2.9 Indirection * 23
2.2.10 Obtention de l’adresse & 24
2.2.11 Operateur sizeof24
2.2.12 Conversion de type (“cast” operator) 25
2.2.13 Operateurs arithmetiques 27
2.2.14 Decalages << >>28
2.2.15 Comparaisons == != < <= > >=28
2.2.16 Operateurs de bits & | ^ 29
2.2.17 Connecteurs logiques && et || 30
2.2.18 Expression conditionnelle ? :31
2.2.19 Affectation = 31
2.2.20 Autres operateurs d’affectation += *= etc 32
2.2.21 L’operateur virgule , 33
2.3 Autres remarques 34
2.3.1 Les conversions usuelles 34
2.3.2 L’ordre d’evaluation des expressions 34
2.3.3 Les operations non abstraites34
3 Instructions 36
3.1 Syntaxe 36
3.2 Presentation detaillee des instructions 37
3.2.1 Blocs37
3.2.2 Instruction-expression 37
3.2.3 Etiquettes et instruction goto38
3.2.4 Instruction if…else..38
3.2.5 Instructions while et do…while 39
3.2.6 Instruction for 40
3.2.7 Instruction switch41
3.2.8 Instructions break et continue 42
3.2.9 Instruction return 43
4 Fonctions 44
4.1 Syntaxe ANSI ou “avec prototype”44
4.1.1 Definition 44
4.1.2 Type de la fonction et des arguments 44
4.1.3 Appel des fonctions 45
4.1.4 Declaration “externe” d’une fonction 46
4.2 Syntaxe originale ou “sans prototype” 46
4.2.1 Declaration et definition 46
4.2.2 Appel47
4.2.3 Coexistence des deux syntaxes 48
4.3 Arguments des fonctions48
4.3.1 Passage des arguments 48
4.3.2 Arguments de type tableau48
4.3.3 Arguments par adresse 49
4.3.4 Arguments en nombre variable 50
5 Objets structures 52
5.1 Tableaux 52
5.1.1 Cas general 52
5.1.2 Initialisation des tableaux 52
5.1.3 Chaınes de caractères 53
5.2 Structures et unions 54
5.2.1 Structures 54
5.2.2 Unions56
5.2.3 Champs de bits 57
5.3 Enumerations57
5.4 Declarateurs complexes58
5.4.1 Cas des declarations 58
5.4.2 Pointeurs et tableaux constants et volatils 60
5.4.3 La declaration typedef 61
5.4.4 Cas des types desincarnes 62
6 Pointeurs 64
6.1 Generalites 64
6.1.1 Declaration et initialisation des pointeurs 64
6.1.2 Les pointeurs generiques et le pointeur NULL 65
6.2 Les pointeurs et les tableaux 66
6.2.1 Arithmetique des adresses, indirection et indexation 66
6.2.2 Tableaux dynamiques 68
6.2.3 Tableaux multidimensionnels69
6.2.4 Tableaux multidimensionnels dynamiques 70
6.2.5 Tableaux de chaınes de caractères 72
6.2.6 Tableaux multidimensionnels formels 74
6.2.7 Tableaux non necessairement indexes à partir de zero 75
6.2.8 Matrices non dynamiques de taille inconnue 76
6.3 Les adresses des fonctions77
6.3.1 Les fonctions et leurs adresses77
6.3.2 Fonctions formelles78
6.3.3 Tableaux de fonctions 80
6.3.4 Flou artistique 81
6.4 Structures recursives 81
6.4.1 Declaration 81
6.4.2 Exemple81
6.4.3 Structures mutuellement recursives 83
7 Entrees-sorties 85
7.1 Flots85
7.1.1 Fonctions generales sur les flots 86
7.1.2 Les unites standard d’entree-sortie 88
7.2 Lecture et ecriture textuelles 88
7.2.1 Lecture et ecriture de caractères et de chaınes 88
7.2.2 Ecriture avec format printf90
7.2.3 Lecture avec format scanf93
7.2.4 A propos de la fonction scanf et des lectures interactives 95
7.2.5 Les variantes de printf et scanf 97
7.3 Operations en mode binaire 97
7.3.1 Lecture-ecriture 97
7.3.2 Positionnement dans les fichiers 98
7.4 Exemples 99
7.4.1 Fichiers “en vrac”99
7.4.2 Fichiers binaires et fichiers de texte 00
7.4.3 Fichiers en accès relatif 01
7.5 Les fichiers de bas niveau d’UNIX02
8 Autres elements du langage C 104
8.1 Le preprocesseur 04
8.1.1 Inclusion de fichiers 04
8.1.2 Definition et appel des “macros” 105
8.1.3 Compilation conditionnelle06
8.2 La modularite de C 108
8.2.1 Fichiers en-tete 109
8.2.2 Exemple : stdio.h110
8.3 Deux ou trois choses bien pratiques. 12
8.3.1 Les arguments du programme principal112
8.3.2 Branchements hors fonction : setjmp.h114
8.3.3 Interruptions : signal.h 15
8.4 La bibliothèque standard116
8.4.1 Aide à la mise au point : assert.h 17
8.4.2 Fonctions utilitaires : stdlib.h 18
8.4.3 Traitement de chaınes : string.h 20
8.4.4 Classification des caractères : ctype.h21
8.4.5 Fonctions mathematiques : math.h 21
8.4.6 Limites propres à l’implementation : limits.h, float.h 21
Télécharger le fichier PDF: Le langage C