>> SPEAKER 1: Оказва се, можем успешно размяна на стойностите в две
променливи, като ги прехвърляха в функционира не по стойност или от копие, но
чрез позоваване или от техните адреси.
С други думи, ние трябва да се наберат нещо, известно като указател.
A показалка, наистина, е само адрес на някаква променлива.
И така, ако ние осигуряваме функция, наречена, например, размяна с адреса на
променлива и адреса на друга променлива, суап следва да бъде оправомощена да
отидете на всеки един от тези адреси и дори да промени
ценности, които са там.
>> Нека да видим това в контекст.
Нека reimplement суап, както следва.
Първо, нека да се промени да не бъде Int но за да бъде указател към Int или
адрес на вътр.
Тогава нека направим същото и за б, промяна това от Int да бъде указател към
Int или адрес на Int.
>> Тогава вътре в суап, нека още Декларирам, TMP, така че ние имаме
временно място за на стойност.
Но на стойност не е себе си, защото отново, а сега е на адреса
на някои вътр.
Така че, ако искаме да отидем на този адрес и получите Int на този адрес, ние имаме
сочен този указател, също под формата на оператора на звезда, писане звезда.
>> На следващо място, аз не искам да се промени стойността на.
Искам да променя стойността на а, като се има предвид, отново,
че е адрес.
Така че, за да направим така, аз отново трябва да се каже, звезда получава.
И сега искам да се сложи в стойността че е в б, не стойността на б, който
също е адрес.
>> Така че, отново казвам, звезда б.
След това в последния ми ред, трябва да замените това, което е на адрес б с
какъв е бил първоначално местоположение на А.
За да направите това, което правя звезда б получава ПТУ.
>> Сега в края на краищата това функция е все още само
три реда код.
Но тъй като това е манипулиране на стойности на чрез адреса си и не
суровини и ценности, които бяха приети в функция, аз твърдя, че суап сега е
упълномощено да промени стойностите, които са преминали през чрез техните адреси.
>> Но трябва да се направи една промяна все още.
Вече не може да премине в х и у себе си.
Трябва да мине в адресите на х и у.
И за да направим това, имам нужда от малко различен нотация до върха.
Искам да сменяте X и Y, като преминават през адреса на х, посочен от
амперсанд X, както и адреса на Y, посочено от амперсанд у.
>> По същия начин, до върха сега ми е необходимо, за да промените прототип на функцията на
съвпада с промяната, която съм направил, така че а отново е указател към вътр.
б отново е указател към вътр.
И сега не мога да спася моето досие.
И нека да компилирате и да го стартирате.
>> Направете суап точка наклонена черта суап.
И този път, X и Y са наистина сега разменят така, че техните стойности не са
1 и 2, но 2 и 1.