C - Cheat-Sheet
Introduction
Le langage C est un langage de bas niveau qui doit être compilé avant d'être exécuté.
Variables
En C, les variables ont 4 caractéristiques :
- Un type (int, float, char ou void)
- Un identifiant (un nom).
- Une valeur (correspondant au type).
- Une adresse mémoire (en hexadécimale).
Voici les différents types de variables avec leur taille associé en octet ainsi que leurs valeur minimum et maximum :
Déclaration
- Entier :
int myInteger = 0;
- Flottant :
float myFloat = 26.34;
- Caractère :
char myChar = 'J';
// Avec le code ASCII (caractère 'A')
char myChar = 65;
- Chaîne de caractères (tableau de char terminant par '\0') :
char name[256]="Elieroc";
- Tableau :
int monTableau[5]={1, 4, 7};
- Constante (en majuscule) :
const float PI = 3.14;
- Statique (la valeur reste en mémoire après avoir quittée la fonction appelante) :
static int maVariableStatique = 2;
- Préprocesseur :
#define LONGUEUR (15)
Bibliothèques
- Standard :
#include <stdlib.h>
- Standard Input/Output :
#include <stdio.h>
- String (pour les chaînes de caractères :
#include <string.h>
Assert (pour les vérifications) :
#include <assert.h>
Fonctions
Déclaration / Implémentation
En C, on distingue le prototype d'une fonction de son implémentation. Le prototype n'est pas indispensable mais utile lorsqu'on souhaite implémenter les fonctions après la fonction main par exemple.
- Prototypage :
float calculator(float op1, float op2);
- Implémentation :
float calculator(float op1, float op2){
return op1 + op2;
}
Type et valeur de retour
Chaque fonction a un type qui doit correspondre à sa valeur de retour :
int myFunc(){
return 3;
}
Cette valeur de retour peut être stockée dans une variable :
myVar=myFunc(); // '3'
Main
Tout programme en langage C présente la fonction main qui sera naturellement appelée lors de l’exécution du programme :
int main(){
return 0;
}
Printf
La fonction printf() permet d'afficher des éléments dans la sortie standard (souvent il s'agit de la console).
printf("Hello world !");
Elle prend en charge les flags pour afficher des variables :
printf("Mon entier : %d et mon flottant : %f \n", myInt, myFloat);
Remarque : On notera la présence du caractère '\n' pour marquer le retour à la ligne.
Scanf
La fonction scanf() permet de récupérer des éléments de l'entrée standard (souvent il s'agit du clavier).
Ici, la valeur est transmise dans la variable myInt :
scanf("%d", &myInt);
Remarque : Il fonctionne avec les flags comme printf.
Commentaires
Commentaire sur une seule ligne :
// Mon commentaire
Commentaire sur plusieurs lignes :
/*
Mon commentaire
en plusieurs lignes
*/
Cast (transtypage)
- Passer d'un flottant à un entier :
int myInteger = (int)myFloat;
Les flags
Pour certaines fonctions, il peut être nécessaire d'utiliser des flags (ex : printf ou scanf).
Voici la liste des flags les plus courants :
Flags |
Types de variables |
%d |
int |
%f |
float |
%c |
char |
%s |
string |
Les conditions
If
int niveau = 18;
if (niveau < 5 || niveau == 18)
{
printf("Yop");
}
If / Else
int niveau = 18;
if (niveau < 5 || niveau == 18)
{
printf("Yop");
}
else
{
printf("Hoho");
}
Switch
int age = 18;
switch(age)
{
case 18:
printf("Tu as la majorité !");
break;
case 100:
printf("Tu es centenaire !");
break;
default:
break;
}
Ternaire
int age = 16;
(age == 15) ? printf("tu as 15 ans") : printf("Interdit pour toi");
Les boucles
While
int i = 0;
while (i<10){
printf("Waou !\n");
i++;
}
For
int i;
for (i = 0 ; i<5 ; i++){
printf("Ce message est affiché 5 fois\n");
}
- Parcourir un tableau :
int monTableau[5];
for (int i = 0 ; i < 5 ; i++)
{
monTableau[i] = i*3;
}
Tableaux
Pointeurs
Un pointeur est une variable qui stocke une adresse mémoire.
Déclaration
int nb1 = 5;
int *pt_nb1 = &nb1;
Utilisation
- Le caractère & placé devant l'identifiant de la variable fait référence à l'adresse de celle-ci.
- Le caractère * placé devant l'identifiant de la variable fait référence à la valeur stockée dans la variable derrière le pointeur.
void exchange(float*nombreA, float*nombreB)
{
float tmp = *nombreB;
*nombreB = *nombreA;
*nombreA = tmp;
}
int main(){
float nombreA = 6.8;
float nombreB = 9.45;
printf("A = %.2f | B = %.2f\n", nombreA, nombreB);
exchange(&nombreA, &nombreB);
printf("A = %.2f | B = %.2f", nombreA, nombreB);
return 0;
}