Menu
Coddy logo textTech

Passage de pointeurs aux fonctions

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

Maintenant que vous comprenez les limites du passage par valeur, explorons comment le passage de pointeurs aux fonctions résout ce problème. Au lieu de passer une copie de la valeur d'une variable, vous pouvez passer l'adresse mémoire de la variable à la fonction.

Lorsque vous passez un pointeur à une fonction, la fonction reçoit l'accès à l'emplacement de la variable d'origine en mémoire. Cela signifie que la fonction peut travailler directement avec les données d'origine, et non seulement une copie de celles-ci.

void processValue(int *ptr) {
    // ptr contient l'adresse de la variable d'origine
    // La fonction peut maintenant accéder à cet emplacement mémoire
}

int main() {
    int x = 10;
    processValue(&x);  // Passer l'adresse de x
    return 0;
}

Remarquez comment nous utilisons l'opérateur d'adresse & lors de l'appel de la fonction pour passer l'adresse de la variable. Le paramètre de la fonction est déclaré comme int *ptr, indiquant qu'il s'attend à recevoir un pointeur vers un entier. Cette technique fondamentale ouvre des possibilités puissantes pour que les fonctions interagissent avec les données de votre programme.

challenge icon

Défi

Facile

Écrivez un programme C qui démontre le passage de pointeurs à des fonctions. Votre programme doit :

  1. Créer une fonction nommée displayValue qui prend un pointeur vers un entier comme paramètre
  2. À l'intérieur de la fonction displayValue, utiliser l'opérateur de déréférencement pour accéder à la valeur à l'adresse mémoire et l'afficher au format : Value at address: [value]
  3. Dans la fonction main, déclarer une variable entière nommée number et l'initialiser avec la valeur 42
  4. Afficher la valeur d'origine au format : Original value: [value]
  5. Appeler la fonction displayValue et passer l'adresse de la variable number en utilisant l'opérateur d'adresse
  6. Après l'appel de la fonction, afficher un message de confirmation : Function call completed

Votre sortie doit démontrer que la fonction reçoit et accède avec succès à l'adresse mémoire de la variable d'origine :

Original value: 42
Value at address: 42
Function call completed

Ce défi introduit le concept fondamental du passage de pointeurs aux fonctions, permettant à la fonction d'accéder à l'emplacement mémoire de la variable d'origine plutôt que de travailler avec une copie de sa valeur.

Aide-mémoire

Lors du passage de pointeurs à des fonctions, la fonction reçoit l'accès à l'emplacement mémoire de la variable d'origine au lieu d'une copie de sa valeur.

Utilisez l'opérateur d'adresse & pour passer l'adresse d'une variable à une fonction :

void processValue(int *ptr) {
    // ptr contient l'adresse de la variable d'origine
    // La fonction peut maintenant accéder à cet emplacement mémoire
}

int main() {
    int x = 10;
    processValue(&x);  // Passe l'adresse de x
    return 0;
}

Le paramètre de la fonction est déclaré comme int *ptr pour indiquer qu'il s'attend à recevoir un pointeur vers un entier.

Essayez vous-même

#include <stdio.h>

// TODO: Écrivez votre fonction displayValue ici

int main() {
    // TODO: Écrivez votre code ici
    // 1. Déclarer et initialiser la variable number
    // 2. Afficher la valeur d'origine
    // 3. Appeler la fonction displayValue
    // 4. Afficher le message de fin
    
    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