1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,700 >> DAVID J. Malan: Gadewch i ysgrifennu rhaglen yn yr ydym yn ceisio cyfnewid y gwerthoedd 3 00:00:02,700 --> 00:00:04,970 dau newidyn, x ac y. 4 00:00:04,970 --> 00:00:07,490 Ymlaen llaw, yr wyf wedi ysgrifennu llawer o'r rhaglen hon eisoes. 5 00:00:07,490 --> 00:00:11,130 Yn gyntaf, yr wyf yn datgan newidyn, x, ac yn ei storio ynddo gwerth, 1. 6 00:00:11,130 --> 00:00:14,120 Yna, yr wyf yn datgan amrywiol y a storio ynddo gwerth, 2. 7 00:00:14,120 --> 00:00:17,700 >> Yna mi fwrw ymlaen â printf i arddangos gwerthoedd y ddau newidyn. 8 00:00:17,700 --> 00:00:21,090 Yna mi hawlio â printf arall i gael eu cyfnewid newidynnau hynny. 9 00:00:21,090 --> 00:00:23,690 Yna mi galw swyddogaeth o'r enw cyfnewid. 10 00:00:23,690 --> 00:00:26,100 Ac yna yr wyf yn honni bod y newidynnau wedi cael eu cyfnewid. 11 00:00:26,100 --> 00:00:30,610 Ac yna yr wyf yn argraffu allan bod yr hyn yr wyf yn hawlio yw gwerthoedd newydd o x ac y. 12 00:00:30,610 --> 00:00:32,030 >> Nawr beth yw hyn cyfnewid swyddogaeth? 13 00:00:32,030 --> 00:00:34,970 Nid yw'n rhywbeth sy'n dod â C. Yn wir, os edrychwn ar ben fy 14 00:00:34,970 --> 00:00:38,850 ffeil, byddwch yn sylwi fy mod wedi datgan prototeip ar gyfer y cyfnewid swyddogaeth 15 00:00:38,850 --> 00:00:42,750 yn nodi ei bod yn cymryd dau ints, a elwir yn a b fympwyol, ac mae hyn yn 16 00:00:42,750 --> 00:00:44,300 Nid yw swyddogaeth yn dychwelyd unrhyw beth. 17 00:00:44,300 --> 00:00:48,370 Felly yn ôl pob tebyg, mae'n gwneud yr hyn y mae'n ei ddweud mewn cyfnewidiadau yn a gwerthoedd b yn. 18 00:00:48,370 --> 00:00:50,170 Gadewch i ni yn awr weithredu cyfnewid. 19 00:00:50,170 --> 00:00:53,820 >> Yn gyntaf, yr wyf i'n mynd i ddatgan dros dro amrywiol ac aseinio iddo 20 00:00:53,820 --> 00:00:57,260 gwerth mewn, er y gallwn dim ond mor hawdd storio ynddo b. 21 00:00:57,260 --> 00:01:00,925 Yna yr wyf i'n mynd i newid y gwerth o fod yn gyfartal i'r un yn b. 22 00:01:00,925 --> 00:01:04,849 Ac yna yn olaf, yr wyf i'n mynd i newid y gwerth b i fod yn beth oedd ond 23 00:01:04,849 --> 00:01:06,340 bellach mewn tymheredd. 24 00:01:06,340 --> 00:01:08,910 >> Nawr rwy'n hawlio hyn yr wyf wedi ei wneud yn unig yn rhesymegol gywir. 25 00:01:08,910 --> 00:01:12,780 Rwyf wedi ei storio yn mewn newidyn dros dro, newid gwerth yn i fod yn b, ac yna 26 00:01:12,780 --> 00:01:15,580 newid gwerth b i fod beth oedd. 27 00:01:15,580 --> 00:01:18,620 Ond pan fyddaf yn llunio ac yn rhedeg y rhaglen, yr wyf yn poeni nad yw hynny'n 28 00:01:18,620 --> 00:01:20,140 mynd hyn yr wyf yn ei weld. 29 00:01:20,140 --> 00:01:21,625 >> Gwnewch, dim cyfnewid. 30 00:01:21,625 --> 00:01:24,350 dot slaes, dim cyfnewid. 31 00:01:24,350 --> 00:01:27,560 Ac yn anffodus, yn ôl printf, gwerth x ac y, hyd yn oed 32 00:01:27,560 --> 00:01:31,560 ar ôl i ni honni eu bod yn cyfnewid nhw, yn dal i fod 1 a 2. 33 00:01:31,560 --> 00:01:32,630 >> Nawr pam hynny? 34 00:01:32,630 --> 00:01:36,160 Wel, mae'n ymddangos fod yn y prif, pan fyddwn yn yn galw hyn yn cyfnewid swyddogaeth, gan fynd yn 35 00:01:36,160 --> 00:01:39,960 x ac y fel dadleuon, mae'n mewn gwirionedd yn copïau o x ac y sy'n 36 00:01:39,960 --> 00:01:41,310 yn cael eu pasio i mewn i cyfnewid. 37 00:01:41,310 --> 00:01:45,430 Sef, eu gwerthoedd 1 a 2 yn basio i mewn cyfnewid fel a b. 38 00:01:45,430 --> 00:01:48,590 Ac mae'n a b ein bod yn y pen draw cyfnewid yn y prif. 39 00:01:48,590 --> 00:01:50,810 >> Hynny yw, 1 yn dod yn 2, 2 yn dod yn 1. 40 00:01:50,810 --> 00:01:54,630 Ond oherwydd bod cyfnewid unrhyw werth dychwelyd ac oherwydd ei fod yn derbyn copïau o x 41 00:01:54,630 --> 00:01:58,220 ac y, mae'n hymddygiad wedi unrhyw effaith ar x ac y. 42 00:01:58,220 --> 00:02:02,610 Yn wir, a a b yn cael eu cwmpasu, fel petai, i gyfnewid, tra x ac y yn parhau i fod 43 00:02:02,610 --> 00:02:03,990 cwmpasu i brif. 44 00:02:03,990 --> 00:02:05,070 >> Felly mae gennym broblem. 45 00:02:05,070 --> 00:02:06,320 Ond sut i drwsio? 46 00:02:06,320 --> 00:02:08,312