1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,700 >> DAVID เจลัน: ให้เขียนโปรแกรมใน ซึ่งเราพยายามที่จะเปลี่ยนค่านิยมของ 3 00:00:02,700 --> 00:00:04,970 สองตัวแปร x และ y 4 00:00:04,970 --> 00:00:07,490 ล่วงหน้าฉันได้เขียนมาก ของโปรแกรมนี้อยู่แล้ว 5 00:00:07,490 --> 00:00:11,130 ครั้งแรกผมประกาศตัวแปร, x, และจัดเก็บอยู่ในนั้นค่า 1 6 00:00:11,130 --> 00:00:14,120 แล้วฉันจะประกาศตัวแปร y และ เก็บอยู่ในนั้นค่า 2 7 00:00:14,120 --> 00:00:17,700 >> แล้วฉันจะดำเนินการกับ printf เพื่อแสดง ค่านิยมของทั้งสองตัวแปร 8 00:00:17,700 --> 00:00:21,090 แล้วฉันจะเรียกร้องด้วย printf อื่น ที่จะแลกเปลี่ยนตัวแปรเหล่านั้น 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 แล้วฉันพิมพ์ออกมาว่าสิ่งที่ฉันเรียกร้อง เป็นค่าใหม่ของ x และ y 12 00:00:30,610 --> 00:00:32,030 >> ตอนนี้สิ่งที่เป็นฟังก์ชั่นการแลกเปลี่ยนนี้ 13 00:00:32,030 --> 00:00:34,970 มันไม่ใช่สิ่งที่มาพร้อมกับ C. อันที่จริงถ้าเรามองที่ด้านบนของฉัน 14 00:00:34,970 --> 00:00:38,850 แฟ้มคุณจะสังเกตเห็นว่าได้มีการประกาศ แบบอย่างที่ดีสำหรับการแลกเปลี่ยนฟังก์ชั่นนี้ 15 00:00:38,850 --> 00:00:42,750 ระบุว่าจะใช้เวลาสอง ints, เรียกพลและ b และนี่ 16 00:00:42,750 --> 00:00:44,300 ฟังก์ชั่นไม่ได้กลับอะไร 17 00:00:44,300 --> 00:00:48,370 ดังนั้นสันนิษฐานว่ามันไม่สิ่งที่กล่าว ในการแลกเปลี่ยนและค่า b ของ 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 แล้วสุดท้ายที่ฉันจะเปลี่ยน ค่าของ b จะเป็นสิ่งที่เป็น แต่ 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 ฉันได้เก็บไว้ในตัวแปรชั่วคราว เปลี่ยนค่าเป็นของ b และจากนั้น 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 และโชคร้ายที่ตาม printf, ค่าของ x และ y แม้ 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 x และ y เป็นอาร์กิวเมนต์ก็จริง สำเนาของ x และ y ที่ 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 และมันก็เป็นและ b ว่าเราในที่สุด การแลกเปลี่ยนในหลัก 39 00:01:48,590 --> 00:01:50,810 >> นั่นคือ 1 กลายเป็น 2, 2 กลายเป็น 1 40 00:01:50,810 --> 00:01:54,630 แต่เนื่องจากมีการแลกเปลี่ยนค่าตอบแทนใด ๆ และเพราะมันได้รับสำเนาของ x 41 00:01:54,630 --> 00:01:58,220 และ y ก็พฤติกรรมได้ ผลกระทบต่อ x และ y ไม่มี 42 00:01:58,220 --> 00:02:02,610 แท้จริงและ b จะถูกกำหนดขอบเขตเพื่อที่จะพูด เพื่อแลกเปลี่ยนในขณะที่ x และ y ยังคงอยู่ 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