Menu
Coddy logo textTech

Modifier des variables via des pointeurs

Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 27 sur 63.

Maintenant, vous pouvez exploiter la véritable puissance des pointeurs : modifier la variable d'origine via une fonction. Lorsque vous passez un pointeur à une fonction, la fonction peut utiliser l'opérateur de déréférencement pour modifier la valeur stockée à cette adresse mémoire.

À l'intérieur de la fonction, vous déréférencez le pointeur en utilisant l'opérateur * pour accéder à la valeur de la variable d'origine et la modifier. Cette technique est appelée passage par référence car vous passez une référence à l'emplacement de la variable en mémoire.

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Déréférencer pour modifier la valeur d'origine
}

int main() {
    int x = 5;
    doubleValue(&x);  // Passer l'adresse de x
    // x vaut maintenant 10 !
    return 0;
}

La clé est d'utiliser *ptr du côté gauche de l'affectation pour modifier la valeur à l'adresse mémoire contenue dans le pointeur. Cela permet aux fonctions de modifier de manière permanente les variables de la fonction appelante, ouvrant des possibilités de programmation puissantes que le passage par valeur ne peut tout simplement pas réaliser.

challenge icon

Défi

Facile

Écrivez un programme en C qui démontre la modification de variables via des pointeurs en créant une fonction qui triple la valeur d'un entier.

Votre programme doit :

  1. Créer une fonction nommée tripleValue qui prend un pointeur vers un entier comme paramètre
  2. À l'intérieur de la fonction tripleValue, utiliser l'opérateur de déréférencement pour multiplier la valeur à l'adresse mémoire par 3
  3. À l'intérieur de la fonction tripleValue, afficher la nouvelle valeur au format : Value tripled to: [value]
  4. Dans la fonction main, déclarer une variable entière nommée number et l'initialiser avec la valeur 8
  5. Afficher la valeur d'origine au format : Original value: [value]
  6. Appeler la fonction tripleValue et passer l'adresse de la variable number en utilisant l'opérateur d'adresse
  7. Après l'appel de la fonction, afficher la valeur finale de number au format : Final value: [value]

Votre sortie doit démontrer que la fonction modifie avec succès la variable d'origine via le pointeur :

Original value: 8
Value tripled to: 24
Final value: 24

Ce défi démontre la puissance du passage par référence à l'aide de pointeurs, où la fonction peut modifier de manière permanente la variable d'origine en déréférençant le pointeur et en changeant la valeur à cet emplacement mémoire.

Aide-mémoire

Vous pouvez modifier la variable d'origine via une fonction en utilisant des pointeurs. Cette technique est appelée passage par référence car vous passez une référence à l'emplacement de la variable en mémoire.

À l'intérieur de la fonction, déréférencez le pointeur à l'aide de l'opérateur * pour accéder à la valeur de la variable d'origine et la modifier :

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Déréférencer pour modifier la valeur d'origine
}

int main() {
    int x = 5;
    doubleValue(&x);  // Passer l'adresse de x
    // x vaut maintenant 10 !
    return 0;
}

Utilisez *ptr sur le côté gauche de l'affectation pour modifier la valeur à l'adresse mémoire contenue dans le pointeur. Cela permet aux fonctions de modifier de manière permanente les variables de la fonction appelante.

Essayez vous-même

#include <stdio.h>

// TODO: Écrivez votre fonction tripleValue ici

int main() {
    // TODO: Écrivez votre code ici
    // Déclarer et initialiser la variable number
    // Afficher la valeur d'origine
    // Appeler la fonction tripleValue
    // Afficher la valeur finale
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logic & Flow