Modifier des variables via des pointeurs
Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 27 sur 63.
Vous pouvez maintenant exploiter toute la puissance des pointeurs : modifier la variable originale par l’intermédiaire d’une fonction. Lorsque vous transmettez un pointeur à une fonction, celle-ci 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 à l’aide de 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 transmettez une référence à l’emplacement de la variable en mémoire.
void doubleValue(int *ptr) {
*ptr = *ptr * 2; // Dereference to modify the original value
}
int main() {
int x = 5;
doubleValue(&x); // Passe l'adresse de x
// x vaut maintenant 10 !
return 0;
}La clé consiste à utiliser *ptr à gauche de l’affectation pour modifier la valeur à l’adresse mémoire détenue par le pointeur. Cela permet aux fonctions de modifier définitivement les variables de la fonction appelante, ouvrant ainsi des possibilités de programmation puissantes que le passage par valeur ne peut tout simplement pas offrir.
Défi
FacileÉcrivez un programme en C qui montre comment modifier des variables à l’aide de 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 par 3 la valeur située à l’adresse mémoire - À l’intérieur de la fonction
tripleValue, afficher la nouvelle valeur au format suivant :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 suivant :
Original value: [value] - Appeler la fonction
tripleValueet lui transmettre l’adresse de la variablenumberà l’aide de l’opérateur « adresse de » - Après l’appel de la fonction, afficher la valeur finale de
numberau format suivant :Final value: [value]
Votre sortie doit montrer que la fonction modifie correctement la variable d’origine par l’intermédiaire du pointeur :
Original value: 8
Value tripled to: 24
Final value: 24Ce défi montre la puissance du passage par référence à l’aide de pointeurs : la fonction peut modifier définitivement la variable d’origine en déréférençant le pointeur et en changeant la valeur située à cet emplacement mémoire.
Essayez vous-même
#include <stdio.h>
// TODO: Écrivez votre fonction tripleValue ici
int main() {
// TODO: Écrivez votre code ici
// Déclarez et initialisez la variable number
// Print the original value
// Appelez la fonction tripleValue
// Affichez 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 Logique & Flux
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înesEntraînez-vous par vous-même : Compilateur C en ligne