Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Passage des arguments par valeur/pointeur/référence | Spécification des Arguments de Fonction
Fonctions C++

Passage des arguments par valeur/pointeur/référence

Glissez pour afficher le menu

Passage par valeur

Les variables créées à l'intérieur d'une fonction sont accessibles uniquement dans cette fonction. Cette règle s'applique également lors du passage des arguments. Les paramètres dans la signature de la fonction ont une portée locale et sont passés par valeur, ce qui signifie que leurs valeurs sont copiées dans la fonction et stockées dans des variables séparées (comme emprunter un livre à la bibliothèque au lieu de prendre l'original).

main.cpp

main.cpp

1234567891011121314151617181920
#include <iostream> // Function that takes an argument by value void modify(int num) { // Modify the parameter (local copy of the argument) num = num * 2; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass 'number' by value modify(number); // Varibale in the main function remains unchanged std::cout << "After function call: " << number << std::endl; }

Passage par pointeur

Passer des arguments par valeur n'est pas toujours efficace. Copier les valeurs utilise de la mémoire supplémentaire, et parfois une fonction doit modifier directement la variable d'origine. Dans ces cas, il est préférable de passer la variable par pointeur, ce qui signifie envoyer son adresse mémoire au lieu de sa valeur. Cela se fait en utilisant l'opérateur de pointeur (*) dans les paramètres de la fonction.

main.cpp

main.cpp

1234567891011121314151617181920212223
#include <iostream> // Function that takes an argument using pointer void modify(int* p_num) { // Modify the value at the memory address pointed by `p_num` // '*' is used to extract the value from the address (pointer) *p_num = (*p_num) * 2; std::cout << "Inside function: " << *p_num << std::endl; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass the address of 'number' using a pointer // '&' is used to get an address of the variable modify(&number); // 'number' in the main function is modified through the pointer std::cout << "After function call: " << number << std::endl; }

Passage par référence

Le passage par référence consiste à donner à une fonction un accès direct à la mémoire d'une variable, ce qui lui permet de modifier la valeur originale sans utiliser l'opérateur de déréférencement (*).

Le passage par référence utilise l'opérateur & dans les paramètres de la fonction. Il fonctionne de manière similaire au passage par pointeur, mais avec deux différences principales :

  • Il n'est pas nécessaire d'utiliser * pour accéder à la variable à l'intérieur de la fonction.
  • Il n'est pas nécessaire d'utiliser & lors de l'appel de la fonction, uniquement dans sa déclaration.
main.cpp

main.cpp

1234567891011121314151617181920
#include <iostream> // Function that takes an argument by reference void modify(int& num) { // Modify the parameter directly (no need for dereferencing) num = num * 2; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass `number` by reference modify(number); // `number` in the main function is modified directly through the reference std::cout << "After function call: " << number << std::endl; }
question mark

Quelle affirmation décrit le mieux la différence entre le passage par valeur, par pointeur et par référence ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 2. Chapitre 2
some-alt