1 00:00:00,000 --> 00:00:03,080 >> დინამიკები 1: თურმე ჩვენ შეგვიძლია წარმატებით სვოპ ღირებულებების ორ 2 00:00:03,080 --> 00:00:07,670 ცვლადები გავლით მათ ფუნქციონირებას არ ღირებულება ან ასლი, მაგრამ 3 00:00:07,670 --> 00:00:10,390 მინიშნება ან მათი მისამართები. 4 00:00:10,390 --> 00:00:12,740 სხვა სიტყვებით რომ ვთქვათ, ჩვენ უნდა ბერკეტები რაღაც ცნობილი როგორც მაჩვენებელი. 5 00:00:12,740 --> 00:00:15,580 მაჩვენებელი, რეალურად, მხოლოდ მისამართი ზოგიერთი ცვლადი. 6 00:00:15,580 --> 00:00:19,660 და თუ ჩვენ გთავაზობთ ფუნქცია მოუწოდა, ვთქვათ, სვოპ ერთად მისამართი 7 00:00:19,660 --> 00:00:23,550 ცვლადი და მისამართი სხვა ცვლადი, swap უნდა იყოს უფლება 8 00:00:23,550 --> 00:00:26,090 წასვლა თითოეული იმ მისამართები და პრაქტიკულად შეცვლის 9 00:00:26,090 --> 00:00:27,360 ღირებულებები, რომ არსებობს. 10 00:00:27,360 --> 00:00:28,890 >> ვნახოთ ამ კონტექსტში. 11 00:00:28,890 --> 00:00:31,360 მოდით reimplement swap ასეთია. 12 00:00:31,360 --> 00:00:35,810 პირველ რიგში, მოდით შეცვლა არ უნდა იყოს int მაგრამ უნდა იყოს მომცეთ int ან 13 00:00:35,810 --> 00:00:36,920 მისამართი int. 14 00:00:36,920 --> 00:00:40,820 მაშინ მოდით იგივეს b, იცვლება იგი int იყოს მომცეთ 15 00:00:40,820 --> 00:00:42,780 int ან მისამართი int. 16 00:00:42,780 --> 00:00:45,860 >> შემდეგ შიგნით swap, მოდით მაინც აცხადებენ tmp ისე, რომ ჩვენ გვაქვს 17 00:00:45,860 --> 00:00:47,810 დროებითი ადგილია ღირებულება. 18 00:00:47,810 --> 00:00:52,430 მაგრამ ღირებულების არ არის თავისთავად, იმიტომ, კიდევ ერთხელ, ახლა მისამართი 19 00:00:52,430 --> 00:00:53,270 ზოგიერთი int. 20 00:00:53,270 --> 00:00:57,320 ასე რომ, თუ ჩვენ გვინდა, რომ მისამართი და კიდევ int იმ მისამართზე, ჩვენ გვაქვს 21 00:00:57,320 --> 00:01:03,020 dereference ეს მაჩვენებელი, ასევე გზა ვარსკვლავი ოპერატორი, წერილობით ვარსკვლავი. 22 00:01:03,020 --> 00:01:05,470 >> შემდეგი, მე არ მინდა, რომ შეიცვალოს ღირებულება. 23 00:01:05,470 --> 00:01:08,770 მე მინდა, რომ შეიცვალოს ღირებულება , შენახვა გათვალისწინებით, კიდევ ერთხელ, 24 00:01:08,770 --> 00:01:10,350 რომ არის მისამართზე. 25 00:01:10,350 --> 00:01:14,050 ასე რომ, ამის გაკეთება, მე კიდევ ერთხელ უნდა ამბობენ, რომ ვარსკვლავი იღებს. 26 00:01:14,050 --> 00:01:18,360 და ახლა მინდა დააყენა ღირებულება რომ დროს b, არ ღირებულება b, რომელიც 27 00:01:18,360 --> 00:01:19,720 ასევე მისამართზე. 28 00:01:19,720 --> 00:01:22,280 >> ასე რომ კიდევ ერთხელ ვამბობ, star ბ. 29 00:01:22,280 --> 00:01:26,690 შემდეგ ჩემი ბოლო ხაზი, მე უნდა გადაწერა რა არის მისამართი b ერთად 30 00:01:26,690 --> 00:01:28,970 რა იყო თავდაპირველი ადგილმდებარეობა. 31 00:01:28,970 --> 00:01:32,910 უნდა გავაკეთოთ, რომ, მე ვარსკვლავი b იღებს tmp. 32 00:01:32,910 --> 00:01:34,820 >> ახლა დღის ბოლოს, ამ ფუნქცია ჯერ კიდევ მხოლოდ 33 00:01:34,820 --> 00:01:35,950 სამი ხაზი კოდი. 34 00:01:35,950 --> 00:01:39,860 არამედ იმიტომ, რომ ეს არის მანიპულირების ღირებულებები გზით მათი მისამართი და არა 35 00:01:39,860 --> 00:01:43,700 ნედლეული ღირებულებები, რომლებიც შევიდა ფუნქცია, I აცხადებენ, რომ swap არის 36 00:01:43,700 --> 00:01:47,670 უფლებამოსილია შეცვალოს ღირებულებებს, რომ გავიდა in via მათი მისამართები. 37 00:01:47,670 --> 00:01:49,510 >> მაგრამ მე უნდა მიიღოს ერთი ცვლილება მაინც. 38 00:01:49,510 --> 00:01:52,190 მე ვეღარ გაივლის x და y თავს. 39 00:01:52,190 --> 00:01:55,030 მე უნდა გაიაროს მისამართები x და y. 40 00:01:55,030 --> 00:01:58,160 და გავაკეთოთ, რომ, მე უნდა ზოგიერთი ოდნავ სხვადასხვა notation up დაბრუნება. 41 00:01:58,160 --> 00:02:02,510 მე მინდა, რომ სვოპ x და y გავლით in მისამართი x, მიერ მითითებულ 42 00:02:02,510 --> 00:02:07,190 ampersand x, და მისამართი y, მიერ მითითებულ ampersand y. 43 00:02:07,190 --> 00:02:10,570 >> ანალოგიურად, up დაბრუნება ახლა მჭირდება შეცვლის ფუნქციის პროტოტიპი to 44 00:02:10,570 --> 00:02:14,980 ემთხვევა ცვლილება, რომელიც მე გააკეთა, ისე, რომ , კიდევ ერთხელ, მომცეთ int. 45 00:02:14,980 --> 00:02:17,190 b, კიდევ ერთხელ, მომცეთ int. 46 00:02:17,190 --> 00:02:18,770 და ახლა შემიძლია გადარჩენა ჩემი ფაილი. 47 00:02:18,770 --> 00:02:20,680 და მოდით recompile და გაუშვით. 48 00:02:20,680 --> 00:02:25,330 >> რათა swap dot slash swap. 49 00:02:25,330 --> 00:02:29,660 და ამ დროს, x და y მართლაც now გაცვალეს ისეთი, რომ მათი ღირებულებები არ არის 50 00:02:29,660 --> 00:02:31,950 1 და 2, მაგრამ 2 და 1. 51 00:02:31,950 --> 00:02:34,900