SPEAKER 1: Det viser sig, at vi kan held bytte værdierne i to variabler ved at sende dem i en fungere ikke i værdi eller ved kopi, men ved henvisning eller ved deres adresser. Med andre ord har vi brug for at udnytte noget kendt som en pegepind. En pointer, virkelig, er blot den adresse nogle variabel. Og så hvis vi giver en funktion kaldes, sige, bytte med adressen på en variabel og adressen på en anden variabel, bør swap have beføjelse til at gå til hver af disse adresser og faktisk ændre værdier, der er der. Lad os se det i sammenhæng. Lad os reimplement swap som følger. Først, lad os ændre en ikke at være en int men at være en pointer til en int eller adressen på en int. Så lad os gøre det samme for b, skiftende det fra en int til at være en pegepind til en int eller adressen på en int. Så inde i swap, lad os stadig erklære tmp, så vi har en midlertidigt sted for en værdi. Men en værdi er ikke i sig selv, fordi igen, en nu adressen nogle int. Så hvis vi ønsker at gå til denne adresse og få int på denne adresse, vi har dereference denne pointer, også i form af stjernen operatør, skrive stjerne en. Næste, jeg ikke ønsker at ændre værdien af ​​en. Jeg ønsker at ændre værdien ved a, holde i tankerne, igen, at a er en adresse. Så for at gøre det, jeg igen har brug at sige stjerne et får. Og nu vil jeg sætte i værdien det er på b, ikke værdien af ​​b, som også er en adresse. Så igen siger jeg, stjernede b. Så i min sidste linje, jeg har brug for at overskrive, hvad der er på adressen b med hvad var på en oprindelige placering. For at gøre det, jeg gør stjernede b får tmp. Nu ved slutningen af ​​dagen, er dette Funktionen er stadig lige tre linjer kode. Men fordi det er at manipulere værdier ved hjælp af deres adresse og ikke rå værdier, som blev passeret ind i funktion, jeg hævder, at swap er nu beføjelse til at ændre de værdier, er gået ind via deres adresser. Men jeg har brug for at lave en ændring endnu. Jeg kan ikke længere passere i x og y selv. Jeg har brug for at passere i de adresser af x og y. Og for at gøre det, jeg har brug for nogle lidt anderledes notation op øverst. Jeg ønsker at bytte x og y ved at passere i adresse x, angivet ved ampersand x, og adressen på y, indikeret ved tegnet y. Ligeledes op øverst nu har jeg brug for ændre den funktion prototype til matche den forandring, jeg har lavet, så en er, igen, en pointer til en int. b er, igen, en pointer til en int. Og nu kan jeg gemme min fil. Og lad os genkompilere og køre den. Gør swap dot skråstreg swap. Og denne gang, x og y er faktisk nu byttes således, at deres værdier er ikke 1 og 2, men 2 og 1.