1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,700 >> დევიდ ჯ Malan: მოდით დავწეროთ პროგრამა რომელიც ჩვენ ვცდილობთ, რომ სვოპ ფასეულობები 3 00:00:02,700 --> 00:00:04,970 ორი ცვლადი, x და y. 4 00:00:04,970 --> 00:00:07,490 წინასწარ, მე დაწერილი ბევრი ამ პროგრამის უკვე. 5 00:00:07,490 --> 00:00:11,130 პირველი, მე განაცხადოს ცვლადი, x, და ჩაწეროთ ის ღირებულება, 1. 6 00:00:11,130 --> 00:00:14,120 მაშინ მე ვაცხადებ ცვლადი y და მაღაზიის ის ღირებულება, 2. 7 00:00:14,120 --> 00:00:17,700 >> მერე გააგრძელოს printf ცარიელია ღირებულებები ამ ორი ცვლადები. 8 00:00:17,700 --> 00:00:21,090 მერე აცხადებენ მეორე printf უნდა შევცვალე იმ ცვლადების. 9 00:00:21,090 --> 00:00:23,690 მაშინ მე მოვუწოდებ ფუნქცია მოუწოდა swap. 10 00:00:23,690 --> 00:00:26,100 და მერე ამბობენ, რომ ცვლადები უკვე გაცვალეს. 11 00:00:26,100 --> 00:00:30,610 და მერე ამობეჭდოთ, რომ რასაც მე ვამბობ არის ახალი ღირებულებებს x და y. 12 00:00:30,610 --> 00:00:32,030 >> ახლა რა არის ეს ფუნქცია swap? 13 00:00:32,030 --> 00:00:34,970 ეს არ არის რაღაც, რომ მოდის C. მართლაც, თუ დავაკვირდებით ზევით ჩემი 14 00:00:34,970 --> 00:00:38,850 ფაილი, თქვენ შეამჩნევთ, რომ მე განაცხადა პროტოტიპი ამ ფუნქციის swap 15 00:00:38,850 --> 00:00:42,750 მიუთითებს, რომ ეს ხდება ორი ints, თვითნებურად მოუწოდა და ბ, და ამ 16 00:00:42,750 --> 00:00:44,300 ფუნქცია არ დააბრუნებს არაფერი. 17 00:00:44,300 --> 00:00:48,370 ასე რომ, სავარაუდოდ, ის აკეთებს რასაც ამბობს ამ გაცვლებს და b ღირებულებებს. 18 00:00:48,370 --> 00:00:50,170 მოდით ახლა განხორციელება swap. 19 00:00:50,170 --> 00:00:53,820 >> პირველი, მე ვაპირებ განაცხადოს დროებითი ცვლადი და მივანიჭოთ მას 20 00:00:53,820 --> 00:00:57,260 ღირებულების, თუმცა მე მხოლოდ ადვილად ინახება ეს ბ. 21 00:00:57,260 --> 00:01:00,925 მე მაშინ შეიცვლება ღირებულება ერთი უნდა იყოს ტოლი რომ ბ. 22 00:01:00,925 --> 00:01:04,849 და მერე ბოლოს, მე ვაპირებ შეცვლას ღირებულება b უნდა იყოს, თუ რა იყო, მაგრამ არის 23 00:01:04,849 --> 00:01:06,340 ახლა temp. 24 00:01:06,340 --> 00:01:08,910 >> ახლა კი ამბობენ, რაც მე უბრალოდ გაკეთდეს ლოგიკურად სწორი. 25 00:01:08,910 --> 00:01:12,780 მე ინახება დროებითი ცვლადი, შეიცვალა ღირებულების უნდა იყოს ბ, შემდეგ კი 26 00:01:12,780 --> 00:01:15,580 შეცვლილია ბ ღირებულების იყოს რა ის იყო. 27 00:01:15,580 --> 00:01:18,620 მაგრამ როდესაც მე კომპილირდება და აწარმოებს ამ პროგრამა, მე შიშობენ, რომ არ არის 28 00:01:18,620 --> 00:01:20,140 აპირებს, რაც მე ვხედავ. 29 00:01:20,140 --> 00:01:21,625 >> რათა, არ swap. 30 00:01:21,625 --> 00:01:24,350 dot სლეში, არ swap. 31 00:01:24,350 --> 00:01:27,560 და სამწუხაროდ, შესაბამისად printf, ღირებულება x და y, მაშინაც კი, 32 00:01:27,560 --> 00:01:31,560 შემდეგ ჩვენ ვამბობთ, უნდა შევცვალე მათ, ჯერ კიდევ 1 და 2. 33 00:01:31,560 --> 00:01:32,630 >> ახლა რატომ არის, რომ? 34 00:01:32,630 --> 00:01:36,160 ასევე, ირკვევა, რომ მთავარი, როდესაც ჩვენ დარეკეთ ამ ფუნქციის swap, გადადის 35 00:01:36,160 --> 00:01:39,960 x და y როგორც არგუმენტები, სინამდვილეში ასლები x და y, რომ 36 00:01:39,960 --> 00:01:41,310 რომლებიც შევიდა swap. 37 00:01:41,310 --> 00:01:45,430 კერძოდ, მათი ღირებულებები 1 და 2 შევიდა swap როგორც და ბ. 38 00:01:45,430 --> 00:01:48,590 და ეს A და B, რომ ჩვენ საბოლოოდ შევცვალე მთავარ. 39 00:01:48,590 --> 00:01:50,810 >> რომ არის, 1 ხდება 2, 2 ხდება 1. 40 00:01:50,810 --> 00:01:54,630 არამედ იმიტომ, რომ swap ვიზიტორების დაბრუნების ღირებულება და რადგან ეს მიღებული ასლები x 41 00:01:54,630 --> 00:01:58,220 და y, ეს ქცევა ეფექტი x და y. 42 00:01:58,220 --> 00:02:02,610 მართლაც, A და B scoped, ასე ვთქვათ, სვოპ, მაშინ x და y რჩება 43 00:02:02,610 --> 00:02:03,990 scoped to main. 44 00:02:03,990 --> 00:02:05,070 >> ასე რომ ჩვენ გვაქვს პრობლემა. 45 00:02:05,070 --> 00:02:06,320 მაგრამ როგორ გაასწორონ ის? 46 00:02:06,320 --> 00:02:08,312