>> დინამიკები 1: თურმე ჩვენ შეგვიძლია წარმატებით სვოპ ღირებულებების ორ
ცვლადები გავლით მათ ფუნქციონირებას არ ღირებულება ან ასლი, მაგრამ
მინიშნება ან მათი მისამართები.
სხვა სიტყვებით რომ ვთქვათ, ჩვენ უნდა ბერკეტები რაღაც ცნობილი როგორც მაჩვენებელი.
მაჩვენებელი, რეალურად, მხოლოდ მისამართი ზოგიერთი ცვლადი.
და თუ ჩვენ გთავაზობთ ფუნქცია მოუწოდა, ვთქვათ, სვოპ ერთად მისამართი
ცვლადი და მისამართი სხვა ცვლადი, swap უნდა იყოს უფლება
წასვლა თითოეული იმ მისამართები და პრაქტიკულად შეცვლის
ღირებულებები, რომ არსებობს.
>> ვნახოთ ამ კონტექსტში.
მოდით reimplement swap ასეთია.
პირველ რიგში, მოდით შეცვლა არ უნდა იყოს int მაგრამ უნდა იყოს მომცეთ int ან
მისამართი int.
მაშინ მოდით იგივეს b, იცვლება იგი int იყოს მომცეთ
int ან მისამართი int.
>> შემდეგ შიგნით swap, მოდით მაინც აცხადებენ tmp ისე, რომ ჩვენ გვაქვს
დროებითი ადგილია ღირებულება.
მაგრამ ღირებულების არ არის თავისთავად, იმიტომ, კიდევ ერთხელ, ახლა მისამართი
ზოგიერთი int.
ასე რომ, თუ ჩვენ გვინდა, რომ მისამართი და კიდევ int იმ მისამართზე, ჩვენ გვაქვს
dereference ეს მაჩვენებელი, ასევე გზა ვარსკვლავი ოპერატორი, წერილობით ვარსკვლავი.
>> შემდეგი, მე არ მინდა, რომ შეიცვალოს ღირებულება.
მე მინდა, რომ შეიცვალოს ღირებულება , შენახვა გათვალისწინებით, კიდევ ერთხელ,
რომ არის მისამართზე.
ასე რომ, ამის გაკეთება, მე კიდევ ერთხელ უნდა ამბობენ, რომ ვარსკვლავი იღებს.
და ახლა მინდა დააყენა ღირებულება რომ დროს b, არ ღირებულება b, რომელიც
ასევე მისამართზე.
>> ასე რომ კიდევ ერთხელ ვამბობ, star ბ.
შემდეგ ჩემი ბოლო ხაზი, მე უნდა გადაწერა რა არის მისამართი b ერთად
რა იყო თავდაპირველი ადგილმდებარეობა.
უნდა გავაკეთოთ, რომ, მე ვარსკვლავი b იღებს tmp.
>> ახლა დღის ბოლოს, ამ ფუნქცია ჯერ კიდევ მხოლოდ
სამი ხაზი კოდი.
არამედ იმიტომ, რომ ეს არის მანიპულირების ღირებულებები გზით მათი მისამართი და არა
ნედლეული ღირებულებები, რომლებიც შევიდა ფუნქცია, I აცხადებენ, რომ swap არის
უფლებამოსილია შეცვალოს ღირებულებებს, რომ გავიდა in via მათი მისამართები.
>> მაგრამ მე უნდა მიიღოს ერთი ცვლილება მაინც.
მე ვეღარ გაივლის x და y თავს.
მე უნდა გაიაროს მისამართები x და y.
და გავაკეთოთ, რომ, მე უნდა ზოგიერთი ოდნავ სხვადასხვა notation up დაბრუნება.
მე მინდა, რომ სვოპ x და y გავლით in მისამართი x, მიერ მითითებულ
ampersand x, და მისამართი y, მიერ მითითებულ ampersand y.
>> ანალოგიურად, up დაბრუნება ახლა მჭირდება შეცვლის ფუნქციის პროტოტიპი to
ემთხვევა ცვლილება, რომელიც მე გააკეთა, ისე, რომ , კიდევ ერთხელ, მომცეთ int.
b, კიდევ ერთხელ, მომცეთ int.
და ახლა შემიძლია გადარჩენა ჩემი ფაილი.
და მოდით recompile და გაუშვით.
>> რათა swap dot slash swap.
და ამ დროს, x და y მართლაც now გაცვალეს ისეთი, რომ მათი ღირებულებები არ არის
1 და 2, მაგრამ 2 და 1.