Skip to main content

พอยน์เตอร์อาร์เรย์คืออะไร?

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

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

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

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

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