1 00:00:00,000 --> 00:00:03,080 >> SPEAKER 1: Nó chỉ ra chúng ta có thể trao đổi thành công các giá trị trong hai 2 00:00:03,080 --> 00:00:07,670 biến bằng cách truyền chúng vào một hoạt động không theo giá trị hoặc bằng cách sao chép, nhưng 3 00:00:07,670 --> 00:00:10,390 bằng cách tham chiếu hoặc địa chỉ của họ. 4 00:00:10,390 --> 00:00:12,740 Nói cách khác, chúng ta cần phải tận dụng một cái gì đó được gọi là một con trỏ. 5 00:00:12,740 --> 00:00:15,580 Một con trỏ, thực sự, chỉ là địa chỉ của một số biến. 6 00:00:15,580 --> 00:00:19,660 Và do đó, nếu chúng tôi cung cấp một chức năng gọi, nói, trao đổi với địa chỉ của 7 00:00:19,660 --> 00:00:23,550 một biến và địa chỉ của người khác biến, trao đổi nên được trao quyền để 8 00:00:23,550 --> 00:00:26,090 đi đến từng địa chỉ của những và thực sự thay đổi 9 00:00:26,090 --> 00:00:27,360 giá trị đang có. 10 00:00:27,360 --> 00:00:28,890 >> Chúng ta hãy xem này trong ngữ cảnh. 11 00:00:28,890 --> 00:00:31,360 Hãy reimplement trao đổi như sau. 12 00:00:31,360 --> 00:00:35,810 Trước tiên, hãy thay đổi một không phải là một int nhưng là một con trỏ đến một int hoặc 13 00:00:35,810 --> 00:00:36,920 địa chỉ của một int. 14 00:00:36,920 --> 00:00:40,820 Sau đó, chúng ta hãy làm tương tự cho b, thay đổi nó từ một int là một con trỏ đến một 15 00:00:40,820 --> 00:00:42,780 int hoặc địa chỉ của một int. 16 00:00:42,780 --> 00:00:45,860 >> Sau đó bên trong trao đổi, chúng ta hãy vẫn tuyên bố tmp để chúng tôi có một 17 00:00:45,860 --> 00:00:47,810 nơi tạm thời cho một giá trị của. 18 00:00:47,810 --> 00:00:52,430 Nhưng một giá trị không phải là một chính nó, bởi vì, một lần nữa, một giờ là địa chỉ 19 00:00:52,430 --> 00:00:53,270 một số int. 20 00:00:53,270 --> 00:00:57,320 Vì vậy, nếu chúng ta muốn đi đến địa chỉ đó và được int tại địa chỉ đó, chúng tôi có 21 00:00:57,320 --> 00:01:03,020 dereference con trỏ này, cũng bằng cách các nhà điều hành sao, viết sao một. 22 00:01:03,020 --> 00:01:05,470 >> Tiếp theo, tôi không muốn thay đổi giá trị của a. 23 00:01:05,470 --> 00:01:08,770 Tôi muốn thay đổi giá trị tại một, giữ trong tâm trí, một lần nữa, 24 00:01:08,770 --> 00:01:10,350 một là một địa chỉ. 25 00:01:10,350 --> 00:01:14,050 Vì vậy, để làm như vậy, tôi một lần nữa cần nói sao một được. 26 00:01:14,050 --> 00:01:18,360 Và bây giờ tôi muốn đưa vào giá trị đó là tại b, không phải là giá trị của b, 27 00:01:18,360 --> 00:01:19,720 cũng là một địa chỉ. 28 00:01:19,720 --> 00:01:22,280 >> Vì vậy, một lần nữa tôi nói, sao b. 29 00:01:22,280 --> 00:01:26,690 Sau đó trong dòng cuối cùng của tôi, tôi cần phải ghi đè lên những gì đang có địa chỉ b với 30 00:01:26,690 --> 00:01:28,970 những gì đã được ở vị trí ban đầu của. 31 00:01:28,970 --> 00:01:32,910 Để làm điều đó, tôi làm sao b được tmp. 32 00:01:32,910 --> 00:01:34,820 >> Bây giờ vào cuối ngày, điều này chức năng vẫn chỉ là 33 00:01:34,820 --> 00:01:35,950 ba dòng mã. 34 00:01:35,950 --> 00:01:39,860 Nhưng vì đó là thao tác các giá trị bằng cách địa chỉ của họ và không phải là 35 00:01:39,860 --> 00:01:43,700 giá trị liệu đã được thông qua vào chức năng, tôi cho rằng trao đổi tại là 36 00:01:43,700 --> 00:01:47,670 trao quyền để thay đổi các giá trị được thông qua tại thông qua địa chỉ của họ. 37 00:01:47,670 --> 00:01:49,510 >> Nhưng tôi cần phải thực hiện một sự thay đổi vẫn còn. 38 00:01:49,510 --> 00:01:52,190 Tôi không còn có thể vượt qua trong x và y mình. 39 00:01:52,190 --> 00:01:55,030 Tôi cần phải vượt qua trong các địa chỉ của x và y. 40 00:01:55,030 --> 00:01:58,160 Và để làm điều đó, tôi cần một số hơi khác nhau ký hiệu lên hàng đầu. 41 00:01:58,160 --> 00:02:02,510 Tôi muốn trao đổi x và y bằng cách đi qua trong địa chỉ của x, được chỉ định bởi 42 00:02:02,510 --> 00:02:07,190 ký hiệu x, và địa chỉ của y, được chỉ ra bởi ký hiệu y. 43 00:02:07,190 --> 00:02:10,570 >> Tương tự như vậy, lên hàng đầu bây giờ tôi cần phải thay đổi mẫu thử nghiệm của chức năng 44 00:02:10,570 --> 00:02:14,980 phù hợp với sự thay đổi mà tôi đã thực hiện, do đó, một là, một lần nữa, một con trỏ đến một int. 45 00:02:14,980 --> 00:02:17,190 b là, một lần nữa, một con trỏ đến một int. 46 00:02:17,190 --> 00:02:18,770 Và bây giờ tôi có thể lưu các tập tin của tôi. 47 00:02:18,770 --> 00:02:20,680 Và chúng ta hãy biên dịch lại và chạy nó. 48 00:02:20,680 --> 00:02:25,330 >> Hãy trao đổi dấu chấm dấu gạch chéo trao đổi. 49 00:02:25,330 --> 00:02:29,660 Và lần này, x và y có thực sự bây giờ trao đổi như vậy mà giá trị của chúng không 50 00:02:29,660 --> 00:02:31,950 1 và 2, nhưng 2 và 1. 51 00:02:31,950 --> 00:02:34,900