ลำโพง 1: มันจะเปิดออกที่เราสามารถทำได้ ประสบความสำเร็จในการสลับค่าในสอง ตัวแปรโดยผ่านพวกเขาเป็น ทำงานไม่ได้ตามค่าหรือการคัดลอก แต่ โดยการอ้างอิงหรือตามที่อยู่ของพวกเขา ในคำอื่น ๆ ที่เราจำเป็นต้องใช้ประโยชน์จาก สิ่งที่เรียกว่าตัวชี้ ชี้จริงๆเป็นเพียง ที่อยู่ของตัวแปรบาง และดังนั้นหากเราให้การทำงานที่เรียกว่า พูดสลับกับที่อยู่ของ ตัวแปรและที่อยู่ของผู้อื่น ตัวแปรแลกเปลี่ยนควรมีอำนาจในการ ไปแต่ละที่อยู่ที่ และที่จริงเปลี่ยน ค่าที่จะมี ลองมาดูในบริบทนี้ ขอ reimplement แลกเปลี่ยนดังต่อไปนี้ ก่อนขอเปลี่ยนไม่ได้ที่จะ int แต่จะชี้ไปยัง int หรือ ที่อยู่ของ int จากนั้นให้ทำเช่นเดียวกันสำหรับ b เปลี่ยน จาก int จะเป็นตัวชี้ไปยัง int หรือที่อยู่ของ int จากนั้นภายในของแลกเปลี่ยนให้คง ประกาศ tmp เพื่อให้เรามี สถานที่ชั่วคราวสำหรับค่าของ แต่ค่าของตัวเองไม่ได้เป็นเพราะ อีกครั้งขณะนี้ที่อยู่ ของ int บาง ดังนั้นหากเราต้องการที่จะไปที่ที่อยู่ที่และ int ได้รับตามที่อยู่ที่เรามี dereference ตัวชี้นี้ยังโดยวิธีการ ผู้ประกอบการดาวเขียนดาว ต่อไปผมไม่ต้องการที่จะเปลี่ยน ค่าของ ผมต้องการที่จะเปลี่ยนค่าที่ , การรักษาในใจอีกครั้ง ที่เป็นอยู่ เพื่อที่จะทำเช่นนั้นอีกครั้งที่ฉันต้องการ ที่จะบอกว่าเป็นดาวได้รับ และตอนนี้ฉันต้องการที่จะใส่ในค่า นั่นคือที่ B ไม่ค่าของ b ซึ่ง ยังเป็นที่อยู่ ดังนั้นอีกครั้งฉันพูดว่าดาวข จากนั้นในบรรทัดสุดท้ายของฉันฉันจำเป็นต้อง เขียนทับสิ่งที่อยู่ขด้วย สิ่งที่เป็นที่ตำแหน่งเดิมของ ต้องการทำเช่นนั้นฉันจะได้รับดาวข tmp ตอนนี้ที่ส่วนท้ายของวันนี้ ฟังก์ชั่นยังคงเป็นเพียงแค่ สามบรรทัดของรหัส แต่เพราะการจัดการกับค่า โดยวิธีการที่อยู่ของพวกเขาและไม่ได้ ค่าวัตถุดิบที่ได้รับการผ่านเข้า ฟังก์ชั่นที่ผมอ้างว่าการแลกเปลี่ยนขณะนี้ เพิ่มขีดความสามารถในการเปลี่ยนค่าที่ จะถูกส่งผ่านไปในทางที่อยู่ของพวกเขา แต่ฉันต้องการที่จะทำให้การเปลี่ยนแปลงอย่างใดอย่างหนึ่งยังคง ฉันไม่สามารถผ่านใน x และ y ตัวเอง ฉันต้องการที่จะผ่านในที่อยู่ ของ x และ y และจะทำอย่างไรที่ฉันต้องการบางเล็กน้อย ด้านบนสัญกรณ์ที่แตกต่างกันขึ้น ฉันต้องการที่จะแลกเปลี่ยนและ y โดยผ่านใน ที่อยู่ของ x ระบุโดย เครื่องหมาย x, และที่อยู่ของ y แสดงโดยเครื่องหมาย y ในทำนองเดียวกันขึ้นด้านบนในขณะนี้ที่ฉันจำเป็นต้อง เปลี่ยนต้นแบบฟังก์ชั่นในการ ตรงกับการเปลี่ยนแปลงที่ฉันได้ทำเพื่อให้ เป็นอีกครั้งที่ชี้ไปยัง int b คืออีกครั้งชี้ไปยัง int และตอนนี้ฉันสามารถบันทึกไฟล์ของฉัน และให้คอมไพล์และเรียกใช้ ทำให้การแลกเปลี่ยนจุดแลกเปลี่ยนเฉือน และในครั้งนี้ x และ y เป็นจริงในขณะนี้ สลับดังกล่าวว่าค่าของพวกเขาไม่ได้ 1 และ 2 แต่ 2 และ 1