>> GARSIAKALBIS 1: Pasirodo, mes galime sėkmingai sukeisti vertybes dviejų
kintamuosius rodiklius perduoti juos į veikti ne pagal vertę, arba kopija, bet
nurodant, ar jų adresus.
Kitaip tariant, mums reikia išnaudoti kažkas žinomas kaip žymeklį.
Žymeklis, tikrai, yra tik adresas tikrą kintamąjį.
Ir todėl, jei mes teikiame funkcija vadinama, tarkim, apsikeitimo su adresu
kintamojo ir kito adresas kintamasis, mainai turėtų būti suteikti įgaliojimai
eiti į kiekvieną iš šių adresų ir iš tiesų pakeisti
vertybės, kurios yra ten.
>> Pažiūrėkime šį kontekstą.
Leiskite reimplement apsikeitimo taip.
Pirma, galime pakeisti ne būti int tačiau turi būti rodyklė į int arba
adresas int.
Tada darykime patį b, keičiant ji iš int būti rodyklė į
int ar iš int adresą.
>> Tada viduje apsikeitimo, tegul dar paskelbti tmp, kad mes turime
laikina vieta už vertę.
Bet vertė yra ne pati, nes, vėl dabar adresas
kai kurių int.
Taigi, jei norime eiti tuo adresu ir gauti int tuo adresu, mes turime
dereference šio rodyklė, taip pat taikant žvaigždučių operatorius raštu žvaigždute.
>> Be to, aš nenoriu keisti iš vertė.
Noriu pakeisti vertę , atsižvelgiant į tai, dar kartą,
kad yra adresas.
Taigi, norint tai padaryti, aš vėl reikia pasakyti žvaigždė pasireiškia.
Ir dabar aš noriu įdėti į vertę tai ne b, o ne b vertei, kuri
Taip pat yra adresas.
>> Taigi dar kartą sakau, žvaigždės b.
Tada mano paskutinės eilutės, man reikia perrašyti kas yra adresu b su
kas buvo pradinę vietą.
Norėdami tai padaryti, aš žvaigždė b gauna tmp.
>> Dabar bent dienos pabaigoje, tai funkcija yra dar tik
tris eilutes kodo.
Bet kadangi tai manipuliuoti vertybes būdu savo adresą, o ne
žaliavos vertybės, kurios buvo perduodamos į funkcija, galiu reikalauti, kad apsikeitimo dabar
įgaliota pakeisti vertybes, yra priimtas per jų adresus.
>> Bet man reikia padaryti vieną pakeitimą dar.
Aš jau negaliu praeiti x ir y save.
Man reikia praeiti adresais x ir y.
Ir tai padaryti, man reikia šiek tiek kitoks žymėjimas iki viršaus.
Noriu apsikeitimo x ir y, einančios per X adresą, žymimą
Ženklas X, ir adresas y nurodyta ampersand y.
>> Be to, iki viršaus dabar turiu pakeisti funkcijos prototipas
suderinti pakeitimus, kad aš padaręs, kad , vėlgi, rodyklė į int.
b yra, vėlgi, rodyklė į int.
Ir dabar aš galiu išsaugoti savo failą.
Ir tegul perkompiliuoti ir paleisti jį.
>> Padaryti apsikeitimo taškas velniop apsikeitimo.
Ir šį kartą, x ir y yra iš tiesų dabar pavertė tokia, kad jų vertės yra ne
1 ir 2, o 2 ir 1.