1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,700 >> Давид Ј. Малан: Хајде да напишете програм у које покушавамо да мењате вредности 3 00:00:02,700 --> 00:00:04,970 две варијабле, Кс и И. 4 00:00:04,970 --> 00:00:07,490 Унапред, написао сам много овог програма већ. 5 00:00:07,490 --> 00:00:11,130 Прво, ја изјављујем променљива, Кс, и чувајте у њој вредности, 1.. 6 00:00:11,130 --> 00:00:14,120 Онда сам изјављујем променљиву и и складиштити у њој вредности, 2. 7 00:00:14,120 --> 00:00:17,700 >> Онда сам наставити са принтф да прикажете вредности тих две променљиве. 8 00:00:17,700 --> 00:00:21,090 Онда сам тврдим са другом принтф да се замене те променљиве. 9 00:00:21,090 --> 00:00:23,690 Онда позовите функцију која се зове трампа. 10 00:00:23,690 --> 00:00:26,100 И онда ја тврдим да су варијабле су заменили. 11 00:00:26,100 --> 00:00:30,610 А онда сам одштампате да оно што ја тврдим су нове вредности од Кс и И. 12 00:00:30,610 --> 00:00:32,030 >> А каква је та функција свап? 13 00:00:32,030 --> 00:00:34,970 То није нешто што долази са Ц. Заиста, ако се осврнемо на врху моје 14 00:00:34,970 --> 00:00:38,850 фајл, приметићете да сам проглашен прототип за ову функцију свап 15 00:00:38,850 --> 00:00:42,750 наводећи да је потребно два Интс, произвољно се зове и б, и ово 16 00:00:42,750 --> 00:00:44,300 функција не врати ништа. 17 00:00:44,300 --> 00:00:48,370 Дакле вероватно, она чини оно што пише у свопови А и Б вредности екипе. 18 00:00:48,370 --> 00:00:50,170 Хајде да сада спроводи замену. 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 И онда на крају, ја ћу да се промени вредност б да буде оно што је била, али је 23 00:01:04,849 --> 00:01:06,340 сада у темп. 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 >> Направите, нема замену. 30 00:01:21,625 --> 00:01:24,350 дот сласх, нема замену. 31 00:01:24,350 --> 00:01:27,560 И нажалост, према принтф, вредност к и и, чак 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 Па, испада да у главни, када смо зову ову функцију свап, пролази у 35 00:01:36,160 --> 00:01:39,960 Кс и И као аргумената, то је заправо копије к и и који 36 00:01:39,960 --> 00:01:41,310 су прошли у свап. 37 00:01:41,310 --> 00:01:45,430 Наиме, њихове вредности 1 и 2 су прошао у свап као и б. 38 00:01:45,430 --> 00:01:48,590 А то је и б да смо на крају смо замене у главни. 39 00:01:48,590 --> 00:01:50,810 >> То је, 1 постаје 2, 2. постаје 1. 40 00:01:50,810 --> 00:01:54,630 Али зато своп нема повратну вредност и зато што је примила копије к 41 00:01:54,630 --> 00:01:58,220 и И, то је понашање нема утицаја на к и и. 42 00:01:58,220 --> 00:02:02,610 Заиста, и б су сцопед, да тако кажем, да мењате, а кии остају 43 00:02:02,610 --> 00:02:03,990 сцопед на главни. 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