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 ตัวแปรและที่อยู่ของผู้อื่น ตัวแปรแลกเปลี่ยนควรมีอำนาจในการ 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 แลกเปลี่ยนดังต่อไปนี้ 12 00:00:31,360 --> 00:00:35,810 ก่อนขอเปลี่ยนไม่ได้ที่จะ int แต่จะชี้ไปยัง int หรือ 13 00:00:35,810 --> 00:00:36,920 ที่อยู่ของ int 14 00:00:36,920 --> 00:00:40,820 จากนั้นให้ทำเช่นเดียวกันสำหรับ b เปลี่ยน จาก int จะเป็นตัวชี้ไปยัง 15 00:00:40,820 --> 00:00:42,780 int หรือที่อยู่ของ int 16 00:00:42,780 --> 00:00:45,860 >> จากนั้นภายในของแลกเปลี่ยนให้คง ประกาศ tmp เพื่อให้เรามี 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 ของ int บาง 20 00:00:53,270 --> 00:00:57,320 ดังนั้นหากเราต้องการที่จะไปที่ที่อยู่ที่และ int ได้รับตามที่อยู่ที่เรามี 21 00:00:57,320 --> 00:01:03,020 dereference ตัวชี้นี้ยังโดยวิธีการ ผู้ประกอบการดาวเขียนดาว 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 ไม่ค่าของ 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 จากนั้นในบรรทัดสุดท้ายของฉันฉันจำเป็นต้อง เขียนทับสิ่งที่อยู่ขด้วย 30 00:01:26,690 --> 00:01:28,970 สิ่งที่เป็นที่ตำแหน่งเดิมของ 31 00:01:28,970 --> 00:01:32,910 ต้องการทำเช่นนั้นฉันจะได้รับดาวข tmp 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 ฉันต้องการที่จะแลกเปลี่ยนและ y โดยผ่านใน ที่อยู่ของ x ระบุโดย 42 00:02:02,510 --> 00:02:07,190 เครื่องหมาย x, และที่อยู่ของ y แสดงโดยเครื่องหมาย y 43 00:02:07,190 --> 00:02:10,570 >> ในทำนองเดียวกันขึ้นด้านบนในขณะนี้ที่ฉันจำเป็นต้อง เปลี่ยนต้นแบบฟังก์ชั่นในการ 44 00:02:10,570 --> 00:02:14,980 ตรงกับการเปลี่ยนแปลงที่ฉันได้ทำเพื่อให้ เป็นอีกครั้งที่ชี้ไปยัง int 45 00:02:14,980 --> 00:02:17,190 b คืออีกครั้งชี้ไปยัง int 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 >> ทำให้การแลกเปลี่ยนจุดแลกเปลี่ยนเฉือน 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