Aide-mémoire C
Dernière mise à jour
Hello World et structure d'un programme
Chaque programme C démarre à main et renvoie un int.
| Élément | Code |
|---|---|
| Inclure un en-tête | #include <stdio.h> |
| Point d'entrée | int main(void) { ... } |
| Avec des arguments de ligne de commande | int main(int argc, char *argv[]) { ... } |
| Afficher une ligne | printf("Hello, World!\n"); |
| Renvoyer un succès | return 0; |
| Commentaire sur une ligne | // comment |
| Commentaire en bloc | /* comment */ |
Types de données
Les tailles dépendent de la plateforme ; les minimums ci-dessous sont garantis par la norme.
| Type | Description |
|---|---|
int | Entier, au moins 16 bits (généralement 32) |
unsigned int | Entier non négatif |
long / long long | Entiers plus larges (au moins 32 / 64 bits) |
float / double | Virgule flottante simple / double précision |
char | Octet unique, aussi utilisé pour les caractères |
_Bool (bool via <stdbool.h>) | true ou false |
size_t | Type non signé pour les tailles et les indices |
void | Aucun type - utilisé pour les fonctions et les pointeurs génériques |
Spécificateurs de format printf et scanf
Marqueurs qui correspondent au type de chaque argument.
| Spécificateur | Correspond à |
|---|---|
%d / %i | int signé |
%u | int non signé |
%ld / %lld | long / long long |
%f | double (et float dans printf) |
%.2f | double avec 2 décimales |
%c | char unique |
%s | Chaîne (char *) |
%p | Adresse de pointeur |
%x | int non signé en hexadécimal |
%zu | size_t |
Opérateurs
| Opérateur | Signification |
|---|---|
+ - * / % | Arithmétique (% est le reste entier) |
== != | Égal / différent |
< > <= >= | Comparaison |
&& || ! | ET / OU / NON logiques |
& | ^ ~ << >> | ET, OU, OU exclusif, NON binaires, décalages |
++ -- | Incrémentation / décrémentation |
+= -= *= /= | Affectation composée |
cond ? a : b | Conditionnelle ternaire |
sizeof(x) | Taille d'un type ou d'une variable en octets |
Contrôle de flux
| Instruction | Syntaxe |
|---|---|
| If / else | if (x > 0) { ... } else { ... } |
| Else if | else if (x == 0) { ... } |
| Switch | switch (n) { case 1: ...; break; default: ...; } |
| Boucle while | while (i < n) { ... } |
| Boucle do-while | do { ... } while (i < n); |
| Boucle for | for (int i = 0; i < n; i++) { ... } |
| Break / continue | break; sort d'une boucle, continue; passe à l'itération suivante |
| Goto (rare) | goto label; ... label: |
Fonctions
À déclarer avant utilisation, ou ajoutez un prototype en haut du fichier.
| Opération | Syntaxe |
|---|---|
| Définir une fonction | int add(int a, int b) { return a + b; } |
| Prototype (déclaration) | int add(int a, int b); |
| Sans valeur de retour | void greet(void) { ... } |
| Sans paramètres | int rand_seed(void) { ... } |
| Passage par pointeur (modifier) | void inc(int *p) { (*p)++; } |
| Passer un tableau | int sum(int arr[], int n) { ... } |
| Static (local au fichier) | static int helper(void) { ... } |
Pointeurs et mémoire
Un pointeur contient une adresse. La mémoire du tas doit être libérée manuellement.
| Opération | Syntaxe |
|---|---|
| Déclarer un pointeur | int *p; |
| Adresse de | p = &x; |
| Déréférencer (lire/écrire) | int y = *p; / *p = 10; |
| Pointeur nul | int *p = NULL; |
| Allouer sur le tas | int *a = malloc(n * sizeof(int)); |
| Allouer + mettre à zéro | int *a = calloc(n, sizeof(int)); |
| Redimensionner une allocation | a = realloc(a, newSize); |
| Libérer la mémoire du tas | free(a); |
| Arithmétique de pointeurs | *(a + i) est identique à a[i] |
Tableaux et chaînes
En C, les chaînes sont des tableaux de char terminés par \0.
| Opération | Syntaxe |
|---|---|
| Déclarer un tableau | int nums[5]; |
| Initialiser un tableau | int nums[] = {1, 2, 3}; |
| Accéder à un élément | nums[0] = 10; |
| Longueur d'un tableau (sur la pile) | sizeof(nums) / sizeof(nums[0]) |
| Littéral de chaîne | char s[] = "hello"; |
| Longueur d'une chaîne | strlen(s) (exclut \0) |
| Copier une chaîne | strcpy(dst, src); |
| Comparer des chaînes | strcmp(a, b) == 0 signifie égales |
| Concaténer des chaînes | strcat(dst, src); |
Structures et stdlib courante
| Opération | Syntaxe |
|---|---|
| Définir une structure | struct Point { int x; int y; }; |
| Déclarer et accéder | struct Point p; p.x = 1; |
| Accéder via un pointeur | p->x = 1; (identique à (*p).x) |
| Alias de type | typedef struct Point Point; |
| Lire une saisie | scanf("%d", &n); |
| Convertir une chaîne en int | int n = atoi("42"); |
| Valeur absolue / puissance | abs(x) (int), pow(x, y) de <math.h> |
| Trier un tableau | qsort(arr, n, sizeof(int), cmp); |
La syntaxe C, les spécificateurs de format et les schémas de pointeurs que vous utilisez le plus, sur une seule page. Cet aide-mémoire C est une référence rapide pour écrire du C - les types de données, les spécificateurs printf/scanf, les opérateurs, le contrôle de flux, ainsi que les opérations de pointeurs et de mémoire qui font trébucher.
Tout ce qui figure ici est du C standard (C99/C11) et se compile avec gcc ou clang. Copiez ce dont vous avez besoin, ou essayez n'importe quel extrait en direct dans le playground C - aucun compilateur à installer. Vous apprenez le C ? Le cours de C interactif gratuit de Coddy couvre les pointeurs, la mémoire et la bibliothèque standard par la pratique.
FAQ de l'aide-mémoire C
Cet aide-mémoire C est-il gratuit ?
Oui. Cet aide-mémoire C est entièrement gratuit, sans inscription. Mettez-le en favori et revenez dès que vous devez retrouver un type, un spécificateur de format ou une opération de pointeur.
Quelle est la différence entre la pile et le tas en C ?
malloc ou calloc, vit jusqu'à ce que vous appeliez free, et s'utilise lorsque vous avez besoin de mémoire qui survit à la fonction courante ou dont la taille n'est connue qu'à l'exécution. Oublier de free la mémoire du tas provoque une fuite de mémoire.Pourquoi scanf a-t-il besoin d'une esperluette (&) alors que printf non ?
scanf réécrit la valeur dans votre variable, il a donc besoin de l'adresse de la variable - c'est ce que &x lui donne. printf ne fait que lire la valeur, vous passez donc la valeur elle-même. L'exception, ce sont les chaînes : un tableau de char se transforme déjà en pointeur, vous passez donc scanf("%s", name) sans le &.Puis-je m'entraîner à C en ligne ?
Oui. Ouvrez le playground C pour compiler et exécuter n'importe quel extrait de cet aide-mémoire dans votre navigateur - aucun compilateur à installer. Quand vous voulez de la structure, le cours C interactif gratuit de Coddy vous emmène des variables et des boucles jusqu'aux pointeurs et à la gestion de la mémoire, étape par étape.
Cet aide-mémoire convient-il aux débutants ?
Oui. Il est organisé des briques de base les plus courantes (types, printf, contrôle de flux) jusqu'aux plus avancées (pointeurs, mémoire, structures), pour que vous puissiez utiliser les premières sections dès le premier jour et progresser vers le reste.