>> SPEAKER 1: Ukazuje sa, že môžeme úspešne zameniť hodnoty v dvoch
premenné podľa ich odovzdávanie do Funkcia nie je hodnotou alebo kópiu, ale
odkazom alebo ich adresy.
Inými slovami, musíme využiť niečo, známy ako ukazovateľ.
Ukazovateľ, naozaj, je len adresa nejaké premenné.
A tak ak budeme poskytovať funkcie nazýva, povedzme, prehodiť s adresou
variabilný a adresu iného variabilný, výmena by mala byť oprávnená
prejsť na každý z týchto adries a skutočne zmeniť
hodnoty, ktoré sú tam.
>> Poďme sa pozrieť, to v kontexte.
Poďme reimplement výmenu takto.
Po prvé, poďme zmeniť nebyť int ale, že je ukazovateľ na int, alebo
adresa int.
Tak poďme urobiť to isté pre b, meniace sa to z int na ukazovateľ na
int alebo adresa int.
>> Potom sa vo vnútri swapu, poďme ešte Prehlasujem, tmp, takže máme
dočasné miesto pre to hodnotu.
Ale to nie je hodnota sama o sebe, pretože, Opäť platí, že je teraz adresa
nejaké int.
Takže ak chceme ísť na túto adresu a dostať int na tejto adrese, máme
dereferencia tohto ukazovateľa, a to aj formou Prevádzkovateľ hviezda, písanie hviezda A.
>> Ďalej, nechcem meniť hodnota.
Chcem zmeniť hodnotu na , Majúc na pamäti, znova,
, Že je adresa.
Takže k tomu, ja zase potrebovať povedať, hviezda dostane.
A teraz chcem, aby hodnoty že je v B, nie hodnota B, ktorá
je tiež adresa.
>> Takže znovu hovorím, hviezda b.
Potom sa v mojom poslednom riadku, musím prepísať to, čo je na adrese b sa
čo bolo na pôvodnom mieste je.
Ak to chcete, že som to hviezda b dostane tmp.
>> Teraz sa na konci dňa, to funkcia je stále len
tri riadky kódu.
Ale pretože je to manipulácia hodnoty prostredníctvom ich adresy a nie
surovej hodnoty, ktoré boli odovzdané do funkcie, tvrdím, že swap je teraz
právomoc zmeniť hodnoty, ktoré sú odovzdané v cez ich adresy.
>> Ale musím urobiť jednu zmenu v pokoji.
Už nemôžem odovzdať x a y sa.
Musím prejsť v adresách x a y.
A k tomu, že potrebujem nejaký mierne iný zápis až hore.
Chcem vymeniť x a y odovzdaním v adresa x, čo je indikované
ampersand x, a adresu y, čo je indikované ampersand y.
>> Rovnako tak, až hore teraz potrebujem, aby zmeniť prototyp funkcie, aby
zodpovedajú zmeny, ktoré som urobil, takže je opäť ukazovateľ na int.
b je opäť ukazovateľ na int.
A teraz môžem zachrániť svoju súbor.
A poďme skompilujte a spustite ho.
>> Uistite sa výmena bodka lomítko swapu.
A tentoraz, x a y sú naozaj teraz vymeniť tak, aby ich hodnoty nie sú
1 a 2, ale 2 a 1.