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 адреса на Инт. 14 00:00:36,920 --> 00:00:40,820 Тогаш ајде да го стори истото за б, менување тоа од int да биде покажувач на 15 00:00:40,820 --> 00:00:42,780 int или адресата на Инт. 16 00:00:42,780 --> 00:00:45,860 >> Тогаш внатрешноста на swap, ајде уште прогласи мали, така што имаме 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 на некои Инт. 20 00:00:53,270 --> 00:00:57,320 Значи, ако сакаме да одиме на таа адреса и добие int на таа адреса, имаме 21 00:00:57,320 --> 00:01:03,020 dereference овој покажувач, исто така, по пат на ѕвездата оператор, пишување ѕвезда a. 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, кои 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 Потоа во мојот последен линија, јас треба да пребришете она што е на адресата на b со 30 00:01:26,690 --> 00:01:28,970 она што беше во оригиналната локација на a. 31 00:01:28,970 --> 00:01:32,910 Да го направите тоа, јас ѕвезда б добива мали. 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 Јас повеќе не може да помине во x и y себе. 39 00:01:52,190 --> 00:01:55,030 Јас треба да се помине во адреси на x и y. 40 00:01:55,030 --> 00:01:58,160 И да го стори тоа, ќе ми треба малку малку различни нотација до врвот. 41 00:01:58,160 --> 00:02:02,510 Сакам да се разменуваат x и y со полагање во адресата на X, означен со 42 00:02:02,510 --> 00:02:07,190 симболот х и адреса на y, означен со симболот y. 43 00:02:07,190 --> 00:02:10,570 >> Слично на тоа, до врвот сега ми треба за да промена прототип на функцијата да 44 00:02:10,570 --> 00:02:14,980 одговара на промена што сум направил, така што a е, повторно, покажувач на Инт. 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 >> Направи трампа точка коса црта, swap. 49 00:02:25,330 --> 00:02:29,660 И овој пат, x и y се навистина сега заменети така што нивните вредности не се 50 00:02:29,660 --> 00:02:31,950 1 и 2, но 2 и 1. 51 00:02:31,950 --> 00:02:34,900