Guide des Opérateurs Divers en C : Un Guide Amical pour les Débutants

Salut à toi, futur.e programmeur.euse ! Aujourd'hui, nous allons entreprendre un voyage passionnant à travers le monde des opérateurs divers du C. Ne t'inquiète pas si tu es nouveau dans le monde de la programmation – je serai ton guide amical, expliquant tout pas à pas. Alors, mettons-nous en route !

C - Misc Operators

L'Opérateur sizeof en C

Imagine que tu empaques pour un voyage et que tu veux savoir combien d'espace chaque article prend. C'est essentiellement ce que fait l'opérateur sizeof en C – il nous dit la taille des choses dans notre programme !

L'opérateur sizeof renvoie la taille (en octets) de son opérande. Voici comment tu peux l'utiliser :

#include <stdio.h>

int main() {
int number = 42;
char letter = 'A';

printf("Taille de int: %zu octets\n", sizeof(int));
printf("Taille de char: %zu octets\n", sizeof(char));
printf("Taille de la variable number: %zu octets\n", sizeof(number));
printf("Taille de la variable letter: %zu octets\n", sizeof(letter));

return 0;
}

Lorsque tu exécutes ce code, tu verras quelque chose comme :

Taille de int: 4 octets
Taille de char: 1 octet
Taille de la variable number: 4 octets
Taille de la variable letter: 1 octet

Comme tu peux le voir, sizeof peut être utilisé avec à la fois des types de données et des variables. C'est super utile lorsque tu as besoin de savoir exactement combien de mémoire tes données utilisent !

L'Opérateur d'Adresse en C

Maintenant, parlons de l'opérateur d'adresse, représenté par l'ampersand (&). Pense à la mémoire de ton ordinateur comme un grand immeuble d'appartements. Chaque appartement (emplacement mémoire) a son propre adresse. L'opérateur & nous aide à trouver ces adresses !

Voici un exemple simple :

#include <stdio.h>

int main() {
int age = 25;
printf("Valeur de age: %d\n", age);
printf("Adresse de age: %p\n", (void*)&age);

return 0;
}

Cela affichera quelque chose comme :

Valeur de age: 25
Adresse de age: 0x7ffd5e7e9994

L'adresse exacte sera différente sur ton ordinateur, mais tu as l'idée !

L'Opérateur de Déréférencement en C

Si l'opérateur d'adresse (&) est à propos de trouver où quelque chose vit, l'opérateur de déréférencement (*) est à propos de visiter cette adresse et de voir ce qu'il y a dedans. C'est comme dire, "J'ai cette adresse, qu'y a-t-il à l'intérieur ?"

Voyons-le en action :

#include <stdio.h>

int main() {
int cookies = 5;
int *p_cookies = &cookies;

printf("Valeur de cookies: %d\n", cookies);
printf("Adresse de cookies: %p\n", (void*)&cookies);
printf("Valeur de p_cookies: %p\n", (void*)p_cookies);
printf("Valeur à *p_cookies: %d\n", *p_cookies);

return 0;
}

Sortie :

Valeur de cookies: 5
Adresse de cookies: 0x7ffd5e7e9994
Valeur de p_cookies: 0x7ffd5e7e9994
Valeur à *p_cookies: 5

Vois comment *p_cookies nous donne la valeur stockée à l'adresse pointée par p_cookies ? C'est le déréférencement en action !

L'Opérateur Ternaire en C

L'opérateur ternaire est comme une forme abrégée de l'instruction if-else. C'est parfait lorsque tu veux affecter une valeur en fonction d'une condition. Voici la syntaxe :

condition ? valeur_si_vrai : valeur_si_faux

Voyons un exemple :

#include <stdio.h>

int main() {
int age = 20;
char *status = (age >= 18) ? "adulte" : "mineur";

printf("À %d, tu es un %s.\n", age, status);

return 0;
}

Sortie :

À 20, tu es un adulte.

C'est génial, non ? C'est comme poser une question et obtenir l'un des deux possibles réponses !

L'Opérateur Point (.) en C

L'opérateur point est utilisé pour accéder aux membres d'une structure. Pense à une structure comme un conteneur qui peut contenir plusieurs éléments de différents types.

Voici un exemple :

#include <stdio.h>

struct Person {
char name[50];
int age;
};

int main() {
struct Person john = {"John Doe", 30};

printf("Nom: %s\n", john.name);
printf("Âge: %d\n", john.age);

return 0;
}

Sortie :

Nom: John Doe
Âge: 30

Nous utilisons l'opérateur point pour accéder à name et age de notre structure Person.

L'Opérateur d'Indirection en C

L'opérateur d'indirection est en réalité le même que l'opérateur de déréférencement (*) que nous avons discuté précédemment. Il est appelé "indirection" parce qu'il nous permet d'accéder indirectement à une valeur via un pointeur.

Voici un exemple légèrement plus complexe :

#include <stdio.h>

int main() {
int x = 10;
int *p = &x;
int **pp = &p;

printf("Valeur de x: %d\n", x);
printf("Valeur de *p: %d\n", *p);
printf("Valeur de **pp: %d\n", **pp);

return 0;
}

Sortie :

Valeur de x: 10
Valeur de *p: 10
Valeur de **pp: 10

Ici, nous utilisons plusieurs niveaux d'indirection. pp est un pointeur vers un pointeur !

Et voilà ! Nous avons couvert tous les opérateurs divers en C. Souviens-toi, la pratique rend parfait, donc n'ayez pas peur d'expérimenter avec ces opérateurs dans votre propre code. Bonne programmation !

Credits: Image by storyset