suivant:
Avant-propos
monter:
document-html
précédent:
document-html
Table des matières
Les bases
Les versions du langage C
Langage et bibliothèque standard
Les phases de compilation
Les jeux de caractères
Les unités lexicales
Les mots-clés
Les identificateurs
Les commentaires
Les types de base
Les caractères
Les entiers
Les flottants
Les constantes
Les constantes entières
Les constantes caractères
Les constantes flottantes
Les chaînes de caractères littérales
Les constantes nommées
Les #define
Les énumérations
Les déclarations de variables ayant un type de base
Les opérateurs les plus usuels
L'affectation
L'addition
La soustraction
La multiplication
La division
L'opérateur modulo
Les opérateurs de comparaison
Les instructions les plus usuelles
Instruction expression
Instruction composée
Instruction if
Inclusion de source
Les procédures et les fonctions
Définition d'une fonction
Appel d'une fonction
Les procédures
Fonctions imbriquées
Récursivité
Référence à une fonction externe
Comprendre la documentation de la bibliothèque standard
Les fonctions dans le style K&R
Impression formattée
Structure d'un programme
Terminaison d'un programme
Mise en oeuvre du compilateur C sous UNIX
Exercice
Récréation
Les tableaux
Les tableaux
Déclaration de tableaux dont les éléments ont un type de base
Initialisation d'un tableau
Référence à un élément d'un tableau
Chaînes et tableaux de caractères
Les instructions itératives
Instruction for
Instruction while
Instruction do
Instruction break
Instruction continue
Les opérateurs
Opérateur pré et postincrément
Opérateur pré et postdécrément
Quelques utilisations typiques de ces opérateurs
Opérateur et logique
Opérateur ou logique
Opérateur non logique
Exercice
Les pointeurs
Notion de pointeur
Déclarations de variables de type pointeur vers les types de base
Type de pointeur générique
Opérateur adresse de
Opérateur d'indirection
Exercice
Pointeurs et opérateurs additifs
Opérateurs + et -
Opérateurs ++ et -
Différence de deux pointeurs
Exercice
Passage de paramètres
Les besoins du programmeur
Comment les langages de programmation satisfont ces besoins
La stratégie du langage C
Discussion
Une dernière précision
Exercice
Lecture formattée
Les dernières instructions
Instruction switch
Instruction goto
Instruction nulle
Exercice
Récréation
Relations entre tableaux et pointeurs
Conversion des tableaux
L'opérateur d'indexation
Passage de tableau en paramètre
Modification des éléments d'un tableau passé en paramètre
Interdiction de modification des éléments d'un tableau passé en paramètre
Conversion des chaînes littérales
Retour sur printf
Exercice
Tableaux multidimensionnels
Déclarations
Accès aux éléments
Passage en paramètre
Initialisation
Exercice
Tableau de pointeurs
Cas général
Tableaux de pointeurs vers des chaînes
Paramètres d'un programme
Tableau et pointeur, c'est la même chose ?
Commentaires
Cas particulier des chaînes littérales
Récréation
Les entrées-sorties
Pointeur invalide
Ouverture et fermeture de fichiers
Ouverture d'un fichier : fopen
Fermeture d'un fichier : fclose
Lecture et écriture par caractère sur fichier
Lecture par caractère : fgetc
Lecture par caractère : getc
Lecture par caractère : getchar
Écriture par caractère : fputc
Écriture par caractère : putc
Écriture par caractère : putchar
Lecture et écriture par lignes sur fichier
Lecture par ligne : fgets
Lecture par ligne : gets
Écriture par chaîne : fputs
Écriture par chaîne : puts
E/S formattées sur fichiers
Écriture formattée : fprintf
Écriture formattée : printf
Écriture formattée dans une chaîne : sprintf
Exemples d'utilisation des formats
Entrées formattées : fscanf
Entrées formattées : scanf
Entrées formattées depuis une chaîne : sscanf
Récréation
Exercice 1
Exercice 2
Structures, unions et énumérations
Notion de structure
Déclaration de structure
Opérateurs sur les structures
Accès aux membres des structures
Affectation de structures
Comparaison de structures
Tableaux de structures
Exercice
Pointeurs vers une structure
Structures dont un des membres pointe vers une structure du même type
Accès aux éléments d'une structure pointée
Passage de structures en paramètre
Détermination de la taille allouée à un type
Retour sur la conversion des tableaux
Allocation et libération d'espace pour les structures
Allocation d'espace : fonctions malloc et calloc
Libération d'espace : procédure free
Exercice
Les champs de bits
Généralités
Contraintes
Les énumérations
Les unions
Accès aux membres de l'union
Utilisation pratique des unions
Une méthode pour alléger l'accès aux membres
Les expressions
Les conversions de types
Utilité des conversions
Ce qu'il y a dans une conversion
L'ensemble des conversions possibles
Les situations de conversions
La promotion des entiers
Les conversions arithmétiques habituelles
Les surprises des conversions
Les opérateurs
Opérateur non bit à bit
Opérateur et bit à bit
Opérateur ou bit à bit : |
Opérateur ou exclusif bit à bit
Opérateur décalage à gauche
Opérateur décalage à droite
Opérateur conditionnel
Opérateur virgule
Opérateurs d'affectation composée
Opérateur conversion
Sémantique des expressions
Opérateurs d'adressage
Priorité et associativité des opérateurs
Ordre d'évaluation des opérandes
Récréation
Le préprocesseur
Traitement de macros
Les macros sans paramètres
Macros prédéfinies
Les macros avec paramètres
Les pièges des macros
Macros générant des instructions
Compilation conditionnelle
Commande #if
Commandes #ifdef et #ifndef
L'opérateur defined
La commande #error
Usage
Récréation
Les déclarations
Déclarations de définition et de référence
Déclarations de variables
Déclarations de fonctions
Déclarations d'étiquettes de structures et union
Portée des déclarations
Visibilité des identificateurs
Les espaces de noms
Position du problème
Les espaces de noms du langage C
Durée de vie
Classes de mémoire
Position du problème
Les spécificateurs de classe de mémoire
La compilation séparée
Généralités
La méthode du langage C
Définition de types
Utilité des typedef
Restriction d'un type de base
Définition de type structure
Définition de types opaques
Qualificatifs de type
Fonction à nombre variable de paramètres
Exemple 1
Exemple 2
Syntaxe des déclarations
Sémantique des déclarations
Discussion sur les déclarations
En pratique
Un outil : cdecl
La bibliothèque standard
Diagnostic
Manipulation de caractères <ctype.h>
Environnement local <locale.h>
Mathématiques <math.h>
Fonctions trigonométriques et hyperboliques
Fonctions exponentielles et logarithmiques
Fonctions diverses
Branchements non locaux <setjmp.h>
Manipulation des signaux <signal.h>
Nombre variable de paramètres <stdarg.h>
Entrées sorties <stdio.h>
Opérations sur les fichiers
Accès aux fichiers
Entrées-sorties formattées
Entrées-sorties caractères
Entrées-sorties binaires
Position dans un fichier
Gestion des erreurs
Utilitaires divers <stdlib.h>
Conversion de nombres
Génération de nombres pseudo-aléatoires
Gestion de la mémoire
Communication avec l'environnement
Recherche et tri
Arithmétique sur les entiers
Gestion des caractères multi-octets
Manipulation de chaînes <string.h>
Manipulation de la date et de l'heure <time.h>
Les extensions C-99 et C-11
Extension de la syntaxe
Les commentaires mono-lignes
Les déclarations de variables en cours de bloc
Les types de base
Les booléens
Les grands nombres
Les entiers de taille fixée
Tableaux de taille variable
Multithreading
Les jeux de caractères
Les normes
Le code ascii
Les codes ascii en octal
Les codes ascii en hexadécimal
Les codes ascii en décimal
Les codes ISO-Latin-1
Bibliographie
Ressources Internet
La grammaire
Les unités lexicales
Les mots-clés
Les identificateurs
Les constantes
Les chaînes littérales
Les opérateurs
La ponctuation
Nom de fichier d'inclusion
Les nombres du préprocesseur
Les expressions
Les déclarations
Les instructions
Définitions externes
Directives du préprocesseur
Références croisées de la grammaire
Un bestiaire de types
Les types de base
Les tableaux
Les pointeurs
Les fonctions
Les énumérations
Les structures, unions et champs de bits
Les qualificatifs
Le bêtisier
Erreur avec les opérateurs
Erreur sur une comparaison
Erreur sur l'affectation
Erreurs avec les macros
Un #define n'est pas une déclaration
Un #define n'est pas une initialisation
Erreur sur macro avec paramètres
Erreur avec les effets de bord
Erreurs avec l'instruction if
Erreurs avec les commentaires
Erreurs avec les priorités des opérateurs
Erreur avec l'instruction switch
Oubli du break
Erreur sur le default
Erreur sur les tableaux multidimensionnels
Erreur avec la compilation séparée
Matthieu Moy 2017-02-08