Passer au contenu principal
eLearner.app
Module 5 · Leçon 2 sur 212/18 dans le cours~15 min
Leçons du module (2/2)

Pointeurs

Les pointeurs sont l'une des fonctionnalités les plus puissantes et distinctives du C++. Ils permettent d'accéder directement à la mémoire physique de l'ordinateur, offrant une gestion efficace des ressources et des performances élevées.


1. Qu'est-ce que la mémoire et une adresse ?

Chaque variable que vous déclarez dans votre programme est stockée dans une cellule de la mémoire RAM. Chaque cellule possède une adresse mémoire unique (généralement exprimée au format hexadécimal, ex. 0x7ffee3bf87ac).

C++ nous permet d'obtenir l'adresse mémoire de n'importe quelle variable à l'aide de l'opérateur d'adresse & :

Code
int x = 42;
std::cout << &x; // Stampa l'indirizzo di memoria di x (es. 0x7ffee3bf87ac)

2. Définition d'un pointeur

Un pointeur est une variable spéciale qui stocke comme valeur l'adresse mémoire d'une autre variable.

La syntaxe prévoit l'utilisation de l'astérisque * après le type de donnée :

Code
int x = 42;
int* ptr = &x; // ptr è un puntatore a intero che contiene l'indirizzo di x

3. L'opérateur de déréférencement (*)

Pour accéder ou modifier la valeur stockée à l'adresse pointée par un pointeur, nous utilisons l'opérateur de déréférencement (ou d'indirection), également représenté par le symbole * :

Code
int x = 42;
int* ptr = &x;

std::cout << *ptr; // Stampa 42 (il valore a cui punta ptr)

*ptr = 100; // Modifica il valore di x tramite il puntatore
std::cout << x;    // Ora stampa 100!

4. Pointeurs nuls : nullptr

Un pointeur qui ne pointe vers aucune adresse valide doit être initialisé avec le mot-clé nullptr (introduit en C++11) :

Code
int* ptr = nullptr; // Puntatore nullo e sicuro

À vous de jouer

Exercice#cpp.m5.l2.e1
Tentatives : 0Chargement…

Dans le main se trouve une variable value initialisée à 42. Déclarez un pointeur vers un entier ptr qui pointe vers l'adresse de value. Utilisez le déréférencement de ptr pour définir la valeur de value à 100, puis affichez value à l'aide de std::cout.

Chargement de l'éditeur…
Afficher l'indice

Déclarez le pointeur avec `int* ptr = &value;`, modifiez la valeur en déréférençant `*ptr = 100;`, et affichez `std::cout << value;`.

Solution disponible après 3 tentatives

Exercice#cpp.m5.l2.e2
Tentatives : 0Chargement…

Définissez une fonction doubleValue qui accepte un pointeur vers un entier (int* ptr) et multiplie par 2 la valeur vers laquelle il pointe (si le pointeur n'est pas nul). Dans le main, appelez doubleValue en lui passant l'adresse de la variable num et affichez-la.

Chargement de l'éditeur…
Afficher l'indice

La fonction doit accepter `int* ptr`. À l'intérieur, utilisez `*ptr = (_ptr) _ 2`. Dans le main, appelez-la avec `doubleValue(&num);`.

Solution disponible après 3 tentatives

Quiz#cpp.m5.l2.q1
Prêt

Étant donné le code fourni, quelle expression permet de modifier directement la valeur de a en la définissant sur 10 ?

Code
int a = 5;
int* p = &a;
// quale istruzione assegna 10 ad a?
Options de réponse