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 змінна а також адресу іншої змінна, своп повинен бути уповноважений 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 Давайте перевизначити своп таким чином. 12 00:00:31,360 --> 00:00:35,810 По-перше, давайте змінимо же не бути внутр але бути дороговказом на междунар або 13 00:00:35,810 --> 00:00:36,920 адресу в міжнар. 14 00:00:36,920 --> 00:00:40,820 Тоді давайте зробимо те ж саме для B, змінюючи це від междунар бути дороговказом на 15 00:00:40,820 --> 00:00:42,780 Int або адресу в міжнар. 16 00:00:42,780 --> 00:00:45,860 >> Тоді всередині свопу, давайте ще оголосити TMP так що ми маємо 17 00:00:45,860 --> 00:00:47,810 тимчасове місце для значення х років. 18 00:00:47,810 --> 00:00:52,430 Але'S значення не є сам по собі, так, Знову ж, в даний час є адреса 19 00:00:52,430 --> 00:00:53,270 деякого міжнар. 20 00:00:53,270 --> 00:00:57,320 Так що, якщо ми хочемо йти за цією адресою і отримати Int за цією адресою, у нас є 21 00:00:57,320 --> 00:01:03,020 разименовать цього покажчика, і шляхом зірка оператор, писати зірці. 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 А тепер я хочу, щоб покласти у вартості ось на б, що не значення Ь, які 27 00:01:18,360 --> 00:01:19,720 також є адресою. 28 00:01:19,720 --> 00:01:22,280 >> Отже, ще раз кажу, нічліг. 29 00:01:22,280 --> 00:01:26,690 Тоді в моїй останній рядку, мені потрібно переписати те, що за адресою б з 30 00:01:26,690 --> 00:01:28,970 те, що було в оригінальному розташуванні в. 31 00:01:28,970 --> 00:01:32,910 Щоб зробити це, я зірка б отримує 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 сирі значення, які були передані в Функція, я стверджую, що своп тепер 36 00:01:43,700 --> 00:01:47,670 уповноважені змінювати значення, які передаються в через їх адреси. 37 00:01:47,670 --> 00:01:49,510 >> Але мені потрібно зробити одна зміна все ще. 38 00:01:49,510 --> 00:01:52,190 Я більше не може пройти в х і у самих себе. 39 00:01:52,190 --> 00:01:55,030 Мені потрібно пройти в адресах х і у. 40 00:01:55,030 --> 00:01:58,160 А для цього, мені потрібно деякі трохи інші позначення нагорі. 41 00:01:58,160 --> 00:02:02,510 Я хочу, щоб поміняти х і у, передаючи адреса х, позначається 42 00:02:02,510 --> 00:02:07,190 амперсанд х, а також адресу у, позначається амперсанд у. 43 00:02:07,190 --> 00:02:10,570 >> Точно так же, нагорі тепер мені потрібно змінити прототип функції, щоб 44 00:02:10,570 --> 00:02:14,980 відповідати зміна, яке я зробив, так що , Знову ж, це покажчик на междунар. 45 00:02:14,980 --> 00:02:17,190 б, знову ж, це покажчик на междунар. 46 00:02:17,190 --> 00:02:18,770 І тепер я можу врятувати мій файл. 47 00:02:18,770 --> 00:02:20,680 І давайте перекомпілювати і запустити його. 48 00:02:20,680 --> 00:02:25,330 >> Зробити своп точка слеш своп. 49 00:02:25,330 --> 00:02:29,660 І на цей раз, х і у дійсно зараз місцями так, що їх значення не 50 00:02:29,660 --> 00:02:31,950 1 і 2, але 2 і 1. 51 00:02:31,950 --> 00:02:34,900