1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,700 >> David J. MALAN: Írjunk egy programot amelyet igyekszünk cserélni értékeit 3 00:00:02,700 --> 00:00:04,970 két változó, x és y. 4 00:00:04,970 --> 00:00:07,490 Előre írtam sokat A program már. 5 00:00:07,490 --> 00:00:11,130 Először is, hogy egy változót, x, és tárolja azt az értéket, 1. 6 00:00:11,130 --> 00:00:14,120 Aztán változót y és tárolja azt az értéket, 2.. 7 00:00:14,120 --> 00:00:17,700 >> Aztán folytatja printf megjeleníteni ezeket az értékeket a két változó. 8 00:00:17,700 --> 00:00:21,090 Aztán azt állítják, egy másik printf hogy csere azokat a változókat. 9 00:00:21,090 --> 00:00:23,690 Aztán hívja a függvényt nevű csere. 10 00:00:23,690 --> 00:00:26,100 És akkor azt állítom, hogy a változók már cserélték. 11 00:00:26,100 --> 00:00:30,610 És akkor nyomtassa ki, hogy amit én állítják vannak az új értékeket az x és y. 12 00:00:30,610 --> 00:00:32,030 >> Most mi is ezt a funkciót csere? 13 00:00:32,030 --> 00:00:34,970 Ez nem olyan dolog, hogy jön a C- Valóban, ha megnézzük a tetején én 14 00:00:34,970 --> 00:00:38,850 fájl, észre fogod venni, hogy én már kijelentette prototípusa ezt a funkciót csere 15 00:00:38,850 --> 00:00:42,750 leszögezi, hogy úgy két ints, önkényesen úgynevezett a és b, és ez a 16 00:00:42,750 --> 00:00:44,300 függvény nem ad vissza semmit. 17 00:00:44,300 --> 00:00:48,370 Tehát valószínűleg, hogy mit is mond A swap a és a b értékek. 18 00:00:48,370 --> 00:00:50,170 Nézzük most végre csere. 19 00:00:50,170 --> 00:00:53,820 >> Először fogok bejelenteni ideiglenes változó és rendelje hozzá 20 00:00:53,820 --> 00:00:57,260 az érték egy, de tudtam, csak olyan könnyen tárolható benne b. 21 00:00:57,260 --> 00:01:00,925 Én akkor meg fog változni az értéket Egy azonos legyen, hogy ab. 22 00:01:00,925 --> 00:01:04,849 És akkor végül, én meg fog változni a értéke b, hogy mi a volt, de 23 00:01:04,849 --> 00:01:06,340 most temp. 24 00:01:06,340 --> 00:01:08,910 >> Most azt állítják, amit én most tett logikailag helyes. 25 00:01:08,910 --> 00:01:12,780 Már tárolni egy egy ideiglenes változó, megváltoztatta a értéke legyen B, majd 26 00:01:12,780 --> 00:01:15,580 megváltoztatta b értéke, hogy az, amit a-es volt. 27 00:01:15,580 --> 00:01:18,620 De amikor lefordítani és futtatni ezt programot, aggódom, hogy ez nem 28 00:01:18,620 --> 00:01:20,140 lesz, amit látok. 29 00:01:20,140 --> 00:01:21,625 >> Legyen, nincs csere. 30 00:01:21,625 --> 00:01:24,350 dot perjel, nem csere. 31 00:01:24,350 --> 00:01:27,560 És sajnos szerint printf, az x értéke és y, sőt 32 00:01:27,560 --> 00:01:31,560 azt követően, hogy azt állítják, hogy csere őket, még az 1. és 2.. 33 00:01:31,560 --> 00:01:32,630 >> Vajon miért van ez? 34 00:01:32,630 --> 00:01:36,160 Nos, kiderült, hogy a legfontosabb, amikor ezt a funkciót csere, átadva 35 00:01:36,160 --> 00:01:39,960 x és y az érvek, valójában példányban, hogy x és y 36 00:01:39,960 --> 00:01:41,310 is átment csere. 37 00:01:41,310 --> 00:01:45,430 Nevezetesen, ezek értékei 1 és 2 átment a csere, mint a és b. 38 00:01:45,430 --> 00:01:48,590 És ez az a és b, hogy mi vagyunk végül csere a fő. 39 00:01:48,590 --> 00:01:50,810 >> Azaz, 1 lesz 2, 2 1 lesz. 40 00:01:50,810 --> 00:01:54,630 De mivel csere nincs visszatérési értéke és mert kapott példányban x 41 00:01:54,630 --> 00:01:58,220 és y, ez a viselkedés nincs hatással az x és y. 42 00:01:58,220 --> 00:02:02,610 Sőt, a és b távcsöves, hogy úgy mondjam, cserélni, míg x és y marad 43 00:02:02,610 --> 00:02:03,990 távcsöves a fő. 44 00:02:03,990 --> 00:02:05,070 >> Tehát van egy kis probléma. 45 00:02:05,070 --> 00:02:06,320 De hogyan lehet megjavítani? 46 00:02:06,320 --> 00:02:08,312