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.
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 :
- Créer une fonction nommée
tripleValuequi prend un pointeur vers un entier comme paramètre - À 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 - À l'intérieur de la fonction
tripleValue, afficher la nouvelle valeur au format :Value tripled to: [value] - Dans la fonction
main, déclarer une variable entière nomméenumberet l'initialiser avec la valeur 8 - Afficher la valeur d'origine au format :
Original value: [value] - Appeler la fonction
tripleValueet passer l'adresse de la variablenumberen utilisant l'opérateur d'adresse - Après l'appel de la fonction, afficher la valeur finale de
numberau 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: 24Ce 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;
}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
1Les bases des pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de pointeursL'opérateur d'adresse (&)L'opérateur de déréférencement (*)Pointeurs NULLRécapitulatif : Les bases des pointeurs4Projet : Utilitaire de texte simple
Présentation du projetCompter les caractères2Pointeurs et Tableaux
Noms de tableaux comme pointeursÉléments de tableau - PointeursArithmétique des pointeursComparaison de pointeursRécapitulatif : Parcours de tableau par pointeur5Pointeurs et fonctions
Passage par valeurPassage de pointeurs aux fonctionsModifier des variables via des pointeursUn exemple classique : SwapPassage de tableaux aux fonctionsRécapitulatif : Pointeurs comme arguments de fonction3Tableaux de caractères et chaînes
Les chaînes comme tableaux de charLe terminateur nulSaisie de chaînes avec scanfUtilisation de strlen()Utilisation de strcpy()Utilisation de strcat()Utilisation de strcmp()Récapitulatif : Fonctions de base sur les chaînes