>> 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.