Menu
Coddy logo textTech

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émentCode
Inclure un en-tête#include <stdio.h>
Point d'entréeint main(void) { ... }
Avec des arguments de ligne de commandeint main(int argc, char *argv[]) { ... }
Afficher une ligneprintf("Hello, World!\n");
Renvoyer un succèsreturn 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.

TypeDescription
intEntier, au moins 16 bits (généralement 32)
unsigned intEntier non négatif
long / long longEntiers plus larges (au moins 32 / 64 bits)
float / doubleVirgule flottante simple / double précision
charOctet unique, aussi utilisé pour les caractères
_Bool (bool via <stdbool.h>)true ou false
size_tType non signé pour les tailles et les indices
voidAucun 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écificateurCorrespond à
%d / %iint signé
%uint non signé
%ld / %lldlong / long long
%fdouble (et float dans printf)
%.2fdouble avec 2 décimales
%cchar unique
%sChaîne (char *)
%pAdresse de pointeur
%xint non signé en hexadécimal
%zusize_t

Opérateurs

OpérateurSignification
+ - * / %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 : bConditionnelle ternaire
sizeof(x)Taille d'un type ou d'une variable en octets

Contrôle de flux

InstructionSyntaxe
If / elseif (x > 0) { ... } else { ... }
Else ifelse if (x == 0) { ... }
Switchswitch (n) { case 1: ...; break; default: ...; }
Boucle whilewhile (i < n) { ... }
Boucle do-whiledo { ... } while (i < n);
Boucle forfor (int i = 0; i < n; i++) { ... }
Break / continuebreak; 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érationSyntaxe
Définir une fonctionint add(int a, int b) { return a + b; }
Prototype (déclaration)int add(int a, int b);
Sans valeur de retourvoid greet(void) { ... }
Sans paramètresint rand_seed(void) { ... }
Passage par pointeur (modifier)void inc(int *p) { (*p)++; }
Passer un tableauint 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érationSyntaxe
Déclarer un pointeurint *p;
Adresse dep = &x;
Déréférencer (lire/écrire)int y = *p; / *p = 10;
Pointeur nulint *p = NULL;
Allouer sur le tasint *a = malloc(n * sizeof(int));
Allouer + mettre à zéroint *a = calloc(n, sizeof(int));
Redimensionner une allocationa = realloc(a, newSize);
Libérer la mémoire du tasfree(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érationSyntaxe
Déclarer un tableauint nums[5];
Initialiser un tableauint nums[] = {1, 2, 3};
Accéder à un élémentnums[0] = 10;
Longueur d'un tableau (sur la pile)sizeof(nums) / sizeof(nums[0])
Littéral de chaînechar s[] = "hello";
Longueur d'une chaînestrlen(s) (exclut \0)
Copier une chaînestrcpy(dst, src);
Comparer des chaînesstrcmp(a, b) == 0 signifie égales
Concaténer des chaînesstrcat(dst, src);

Structures et stdlib courante

OpérationSyntaxe
Définir une structurestruct Point { int x; int y; };
Déclarer et accéderstruct Point p; p.x = 1;
Accéder via un pointeurp->x = 1; (identique à (*p).x)
Alias de typetypedef struct Point Point;
Lire une saisiescanf("%d", &n);
Convertir une chaîne en intint n = atoi("42");
Valeur absolue / puissanceabs(x) (int), pow(x, y) de <math.h>
Trier un tableauqsort(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.

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 ?
La mémoire de la pile contient les variables locales et est libérée automatiquement quand une fonction se termine - rapide, mais de taille limitée. La mémoire du tas est allouée explicitement avec 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.
Coddy programming languages illustration

Apprenez C avec Coddy

COMMENCER