Skip to main content

ผู้ดำเนินการ dereference คืออะไร?

ตัวดำเนินการ dereference เป็นสัญลักษณ์ที่ใช้ในการเขียนโปรแกรมคอมพิวเตอร์เพื่อดึงค่าที่อยู่ที่ที่อยู่หน่วยความจำเฉพาะผู้ประกอบการมักจะแสดงด้วยเครื่องหมายดอกจันในซอร์สโค้ดจะถูกนำไปใช้ก่อนที่ตัวแปรที่ชี้ไปที่ที่อยู่หน่วยความจำหรือตัวชี้บางครั้งเรียกว่าตัวดำเนินการทางอ้อมตัวดำเนินการ dereference ยังสามารถใช้เมื่อประกาศหรือเริ่มต้นตัวแปรเพื่อระบุว่าพวกเขาเป็นพอยน์เตอร์ไปยังชนิดข้อมูลและไม่ใช่ประเภทข้อมูลเองเมื่อพิจารณาลำดับของการดำเนินงานผู้ดำเนินการ dereference จะมีความสำคัญกว่าผู้ประกอบการทางคณิตศาสตร์มาตรฐานเกือบทั้งหมด

เพื่อทำความเข้าใจกับสิ่งที่ผู้ประกอบการ dereference ทำมันเป็นสิ่งสำคัญที่จะต้องเข้าใจว่าชนิดข้อมูลในการเขียนโปรแกรมคอมพิวเตอร์ทำงานอย่างไรตัวแปรในโปรแกรมสามารถเก็บค่าได้หลายครั้งนี่เป็นเพียงจำนวนเต็มหรือสตริงของอักขระบางครั้งอาจเป็นที่อยู่หน่วยความจำที่ชี้ไปที่ค่าจำนวนเต็มตัวแปรที่ถือที่อยู่หน่วยความจำเรียกว่าพอยน์เตอร์

เมื่อจำเป็นต้องกำหนดแก้ไขหรือดึงข้อมูลที่เก็บไว้ที่ที่อยู่หน่วยความจำตัวชี้ที่มีตัวชี้จะต้องใช้ตัวดำเนินการ dereferenceหากการดำเนินการทางคณิตศาสตร์เช่นการเพิ่มจะทำไปยังตัวแปรตัวชี้โดยไม่ต้องทำการตรวจสอบแล้วการดำเนินการจะดำเนินการบนที่อยู่หน่วยความจำและไม่ใช่ตัวแปรที่กำลังชี้มีบางครั้งที่การดำเนินการทางคณิตศาสตร์ดำเนินการบนที่อยู่หน่วยความจำสามารถเพิ่มประสิทธิภาพเช่นในกรณีของการก้าวแม้ว่าอาร์เรย์ซึ่งเป็นสาเหตุที่ฟังก์ชันนี้มีอยู่เมื่อตัวดำเนินการ dereference ถูกใช้กับตัวชี้การดำเนินการทั้งหมดจะดำเนินการกับข้อมูลที่เก็บไว้ที่ตำแหน่งหน่วยความจำและไม่ใช่ที่อยู่หน่วยความจำเอง

ผู้ประกอบการสามารถใช้เมื่อเริ่มประกาศตัวแปรใหม่โดยการวางโอเปอเรเตอร์ระหว่างประเภทตัวแปรและชื่อตัวแปรมันจะบ่งบอกว่าตัวแปรใหม่ควรเป็นตัวชี้ไปยังประเภทข้อมูลและไม่ใช่แค่อินสแตนซ์ของประเภทตัวแปรที่สร้างขึ้นในแฟชั่นนี้จำเป็นต้องเริ่มต้นด้วยฟังก์ชั่นการจัดสรรหน่วยความจำบางประเภทเนื่องจากตัวชี้จะต้องถูกตั้งค่าเป็นตำแหน่งหน่วยความจำที่ไม่ได้ใช้โดยตัวจัดการหน่วยความจำที่โปรแกรมใช้อยู่

มีอันตรายบางอย่างที่ต้องการหลีกเลี่ยงเมื่อใช้ตัวดำเนินการ dereferenceที่โดดเด่นที่สุดคือพยายามที่จะ dereference ตัวชี้ที่เป็นโมฆะหรือไม่ได้กำหนดในทางเทคนิคตัวชี้ไม่มีที่อยู่หน่วยความจำดังนั้นข้อผิดพลาดหรือข้อยกเว้นที่แตกต่างกันจะถูกสร้างขึ้นซึ่งจะหยุดการดำเนินการของโปรแกรมเวอร์ชัน NULL-SAFE ของตัวดำเนินการ dereference มีอยู่ซึ่งจะไม่ทำให้เกิดข้อผิดพลาด แต่ตัวดำเนินการเหล่านี้มีไวยากรณ์ที่แตกต่างกัน