>> ЗВУЧНИК 1: Излезе можеме успешно се разменуваат вредностите во две
променливи со полагање нив во функција не од вредност или со копија, но
со повикување или од страна на нивните адреси.
Со други зборови, ние треба да потпора нешто познат како покажувач.
Покажувач, навистина, е само адреса на некои променлива.
И така ако ние обезбеди голем функција наречена, да речеме, се разменуваат со адреса на
променлива и адресата на друг променлива, swap треба да бидат овластени да
одат на секоја од тие адреси и всушност промени
вредности кои се таму.
>> Да видиме ова во контекст.
Ајде reimplement swap како што следи.
Прво, да се промени да не биде int но за да биде покажувач на int или
адреса на Инт.
Тогаш ајде да го стори истото за б, менување тоа од int да биде покажувач на
int или адресата на Инт.
>> Тогаш внатрешноста на swap, ајде уште прогласи мали, така што имаме
привремено место за е вредност.
Но е вредност не е сама по себе, затоа што, повторно, сега на адресата
на некои Инт.
Значи, ако сакаме да одиме на таа адреса и добие int на таа адреса, имаме
dereference овој покажувач, исто така, по пат на ѕвездата оператор, пишување ѕвезда a.
>> Следна, јас не сакате да го смените вредноста на.
Сакам да ја смените вредноста на а, имајќи го во предвид, повторно,
дека е адреса.
Па да го стори тоа, јас повторно треба да се каже ѕвезда на добива.
И сега сакам да се стави во вредност дека е во б, а не вредноста на b, кои
исто така, е адреса.
>> Значи, повторно велам, ѕвезда б.
Потоа во мојот последен линија, јас треба да пребришете она што е на адресата на b со
она што беше во оригиналната локација на a.
Да го направите тоа, јас ѕвезда б добива мали.
>> Веднаш на крајот на денот, овој функција се уште е само
три линии на код.
Но, бидејќи тоа е манипулирање вредности по пат на нивното адреса а не
суровини вредности кои беа донесени во функција, тврдам дека трампа е сега
овластени за промена на вредности кои се пренесуваат во преку нивните адреси.
>> Но јас треба да се направи една промена уште.
Јас повеќе не може да помине во x и y себе.
Јас треба да се помине во адреси на x и y.
И да го стори тоа, ќе ми треба малку малку различни нотација до врвот.
Сакам да се разменуваат x и y со полагање во адресата на X, означен со
симболот х и адреса на y, означен со симболот y.
>> Слично на тоа, до врвот сега ми треба за да промена прототип на функцијата да
одговара на промена што сум направил, така што a е, повторно, покажувач на Инт.
б е, пак, претставува покажувач на Инт.
И сега можам да ја спаси мојата датотека.
И ајде да прекомпајлирате и да ја стартувате.
>> Направи трампа точка коса црта, swap.
И овој пат, x и y се навистина сега заменети така што нивните вредности не се
1 и 2, но 2 и 1.