3.5 KiB
Chapitre 0 — Introduction au langage C
0.1 Présentation du langage C
Le langage C est un langage de programmation bas niveau.
Cela signifie qu’il est proche du fonctionnement réel de la machine.
Concrètement, un programme C manipule directement la mémoire.
Chaque variable correspond à une zone mémoire précise.
Le programmeur peut lire et écrire à des adresses mémoire.
Cela se fait à l’aide des pointeurs.
Le C permet aussi de manipuler les bits.
On peut contrôler précisément la représentation des données.
Par exemple, un entier est stocké sous forme binaire.
Le programmeur peut agir directement sur ces bits.
Le C ne masque pas le fonctionnement du processeur.
Il expose des concepts proches de l’assembleur.
Par exemple :
- la pile (stack)
- le tas (heap)
- les appels de fonctions
- la mémoire brute
Le C ne fournit pas de protections automatiques.
Cela signifie que le langage ne vérifie pas certains comportements dangereux.
Par exemple :
- accès hors limites d’un tableau
- utilisation d’un pointeur invalide
- dépassement d’entier
- division par zéro
Ces situations peuvent provoquer un comportement indéfini.
Le programme peut :
- planter
- produire un résultat incorrect
- sembler fonctionner mais être corrompu
Le C ne possède pas de ramasse-miettes.
Un ramasse-miettes (garbage collector) est un système automatique.
Il libère la mémoire qui n’est plus utilisée.
Dans certains langages, cette gestion est automatique.
En C, elle est manuelle.
Lorsque l’on alloue de la mémoire :
- avec malloc
- ou calloc
Il faut la libérer avec free.
Sinon :
- fuite mémoire
- crash
- comportement indéfini
Le C donne un contrôle total au programmeur.
Mais cela demande de la rigueur.
Exemple 1 — Programme minimal
int main(void)
{
// Point d'entrée du programme
return 0;
}
Exemple 2 — Affichage simple
#include <stdio.h>
int main(void)
{
// Affiche un message
printf("Bonjour\n");
return 0;
}
Exemple 3 — Calcul simple
#include <stdio.h>
int main(void)
{
int a = 5;
int b = 3;
int resultat = a + b;
printf("Resultat: %d\n", resultat);
return 0;
}
0.2 Historique et cas d’usage
Le langage C a été créé dans les années 1970.
Il a été conçu pour écrire des systèmes d’exploitation.
Le système UNIX a été écrit en C.
Aujourd’hui, le C est utilisé dans :
- systèmes d’exploitation
- systèmes embarqués
- bibliothèques système
- moteurs haute performance
0.3 Compilation vs interprétation
Un programme C est compilé.
Cela signifie qu’il est transformé en code machine avant exécution.
Étapes :
- Préprocesseur
- Compilation
- Linking
0.4 Structure générale d’un programme C
Un programme C contient :
- des fonctions
- des variables
- des instructions
La fonction principale est main.
0.5 Premier programme
#include <stdio.h>
int main(void)
{
printf("Hello, world\n");
return 0;
}
0.6 Programme minimal et printf
Un programme commence toujours par main.
Exemple 1
int main(void)
{
return 0;
}
Exemple 2
#include <stdio.h>
int main(void)
{
printf("Hello, world\n");
return 0;
}
Exemple 3
#include <stdio.h>
int main(void)
{
int valeur = 42;
printf("Valeur = %d\n", valeur);
return 0;
}