INTERLOCUTEUR 1: Il s'avère que nous pouvons échanger avec succès les valeurs en deux des variables en les passant dans un fonctionne pas par valeur ou par copie, mais par référence ou par leurs adresses. En d'autres termes, nous devons tirer parti quelque chose de connu comme un pointeur. Un pointeur, vraiment, n'est que le adresse d'une variable. Et si nous fournissons une fonction appelée, par exemple, échanger avec l'adresse de une variable et l'adresse de l'autre variable swap doit être habilitée à aller à chacune de ces adresses et fait changer la valeurs qui sont là. Voyons cela dans le contexte. Disons réimplémentons échange comme suit. Tout d'abord, nous allons changer un pas à être un int mais pour être un pointeur vers un int ou l' adresse d'un int. Ensuite, nous allons faire la même chose pour b, changer il d'un int pour être un pointeur vers un int ou l'adresse d'un int. Puis à l'intérieur de swap, nous allons encore déclarer tmp de sorte que nous avons une endroit temporaire pour une valeur de de. Mais d'une valeur n'est pas un lui-même, parce que, encore une fois, un est maintenant l'adresse de certains int. Donc, si nous voulons aller à cette adresse et obtenir int à cette adresse, nous avons déréférencer ce pointeur, également par voie de l'opérateur étoiles, écrit une étoile. Ensuite, je ne veux pas changer la valeur de a. Je veux changer la valeur à un, en gardant à l'esprit, encore une fois, que est une adresse. Donc, pour ce faire, je dois à nouveau à-dire une étoile devient. Et maintenant, je veux mettre en valeur c'est à b, pas la valeur de b, qui est également une adresse. Donc, je le répète, étoile b. Puis, dans ma dernière ligne, je dois écraser ce qui est à l'adresse b avec ce qui était à l'emplacement d'origine d'un. Pour ce faire, je le fais étoiles b obtient tmp. Or, à la fin de la journée, ce fonction est encore juste trois lignes de code. Mais parce que c'est la manipulation de valeurs par le biais de leur adresse et de ne pas le valeurs premières qui ont été adoptées dans le fonction, je prétends que swap est maintenant habilitée à modifier les valeurs que sont transmis via leurs adresses. Mais j'ai besoin de faire un changement encore. Je ne peux plus passer en x et y se. J'ai besoin de passer dans les adresses de x et y. Et pour ce faire, j'ai besoin d'un peu différents haut notation de haut. Je veux échanger x et y en passant l'adresse de x, indiquée par esperluette x, et l'adresse de y, indiqué par esperluette y. De même, là-haut maintenant que je dois modifier le prototype de la fonction de correspondre au changement que j'ai fait, de sorte que un est, encore une fois, un pointeur vers un int. b est, encore une fois, un pointeur vers un int. Et maintenant, je peux enregistrer mon fichier. Et nous allons recompiler et exécuter. Assurez-échange point barre swap. Et cette fois-ci, x et y sont maintenant bien permutés de telle sorte que leurs valeurs ne sont pas 1 et 2, mais 2 et 1.