HÖGTALARE 1: Det visar sig att vi kan framgångsrikt byta värden i två variabler genom att skicka dem till en fungerar inte med värde eller genom kopiering, men genom hänvisning eller deras adresser. Med andra ord måste vi utnyttja något som kallas en pekare. En pekare, egentligen, är bara adressen för en viss variabel. Och så om vi ger en funktion som heter, säg, byta med adressen till en variabel och adressen till en annan variabel bör swap ges befogenhet att går till var och en av dessa adresser och faktiskt ändra värden som finns där. Låt oss se detta i sitt sammanhang. Låt oss reimplement swap enligt följande. Först, låt oss ändra en att inte vara en int men för att vara en pekare till en int eller adressen till en int. Sedan ska vi göra samma sak för b, ändra den från en int vara en pekare till en int eller adressen till en int. Sedan inne i swap, låt oss ändå förklara tmp så att vi har en tillfällig plats för ett värde. Men ett värde är inte i sig, eftersom det, igen, är nu den adress vissa int. Så om vi vill gå till den adressen och får int på den adressen, vi har dereference denna pekare, även i form av stjärnan operatören, skriver stjärnan en. Sedan vill jag inte byta värdet av en. Jag vill ändra värdet på a, med tanke på, igen, att a är en adress. Så för att göra det, återigen måste jag att säga stjärn ett får. Och nu vill jag sätta i värde det är vid b, inte värdet på b, som också är en adress. Så återigen säger jag, stjärna b.. Sedan i min sista raden, jag behöver skriva över vad som står på adress b med vad som var på en ursprungliga plats. För att göra det, gör jag stjärn b får tmp. Nu i slutet av dagen, detta Funktionen är fortfarande bara tre rader kod. Men eftersom det är att manipulera värden genom sin adress och inte den råvärden som gått in i funktion, jag hävdar att swap är nu befogenhet att ändra värdena som förs in via deras adresser. Men jag måste göra en förändring fortfarande. Jag kan inte längre gå in x och y själva. Jag behöver skicka in adresserna av x och y. Och att göra det, jag behöver lite svagt olika notation där uppe. Jag vill byta x och y genom att i adressen av x, som indikeras av et-x, och adressen till y, indikeras av et-tecken y. På samma sätt där uppe nu måste jag ändra funktionens prototyp till matcha den förändring som jag har gjort, så att a är, återigen, en pekare till en int. b är, återigen, en pekare till en int. Och nu kan jag spara min fil. Och låt oss kompilera och köra den. Gör swap prick snedstreck swap. Och den här gången, x och y är faktiskt nu bytte så att deras värden inte 1 och 2, men 2 och 1.