>> SPEAKER 1: Ukazuje se, že můžeme úspěšně zaměnit hodnoty ve dvou
proměnné podle jejich předávání do Funkce není hodnotou nebo kopii, ale
odkazem nebo jejich adresy.
Jinými slovy, musíme využít něco, známý jako ukazatel.
Ukazatel, opravdu, je jen adresa nějaké proměnné.
A tak pokud budeme poskytovat funkce nazývá, řekněme, prohodit s adresou
variabilní a adresu jiného variabilní, výměna by měla být zmocněna
přejít na každý z těchto adres a skutečně změnit
hodnoty, které jsou tam.
>> Pojďme se podívat, to v kontextu.
Pojďme reimplement výměnu takto.
Za prvé, pojďme změnit nebýt int ale, že je ukazatel na int, nebo
adresa int.
Tak pojďme udělat to samé pro b, měnící se to z int na ukazatel na
int nebo adresa int.
>> Pak se uvnitř swapu, pojďme ještě Prohlašuji, tmp, takže máme
dočasné místo pro to hodnotu.
Ale to není hodnota sama o sobě, protože, Opět platí, že je nyní adresa
nějaké int.
Takže pokud chceme jít na tuto adresu a dostat int na této adrese, máme
dereference tohoto ukazatele, a to i formou Provozovatel hvězda, psaní hvězda A.
>> Dále, nechci měnit hodnota.
Chci změnit hodnotu na , majíce na paměti, znovu,
, že je adresa.
Takže k tomu, já zase potřebovat říci, hvězda dostane.
A teď chci, aby hodnoty že je v B, nikoli hodnota B, která
je také adresa.
>> Takže znovu říkám, hvězda b..
Pak se v mém posledním řádku, musím přepsat to, co je na adrese b se
co bylo na původním místě je.
Chcete-li to, že jsem to hvězda b dostane tmp.
>> Nyní se na konci dne, to funkce je stále jen
tři řádky kódu.
Ale protože je to manipulace hodnoty prostřednictvím jejich adresy a nikoli
surové hodnoty, které byly předány do funkce, tvrdím, že swap je nyní
pravomoc změnit hodnoty, které jsou předány v přes jejich adresy.
>> Ale musím udělat jednu změnu v klidu.
Už nemůžu předat x a y se.
Musím projít v adresách x a y.
A k tomu, že potřebuji nějaký mírně jiný zápis až nahoře.
Chci vyměnit x a y předáním v adresa x, což je indikováno
ampersand x, a adresu y, což je indikováno ampersand y.
>> Stejně tak, až nahoře teď potřebuji, aby změnit prototyp funkce, aby
odpovídají změny, které jsem udělal, takže je opět ukazatel na int.
b je opět ukazatel na int.
A teď můžu zachránit svou soubor.
A pojďme zkompilujte a spusťte jej.
>> Ujistěte se výměna tečka lomítko swapu.
A tentokrát, x a y jsou opravdu nyní vyměnit tak, aby jejich hodnoty nejsou
1 a 2, ale 2 a 1.