ความแตกต่างระหว่างตัวชี้และอาร์เรย์

Anonim

ตัวชี้และ Array

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

ตัวชี้คืออะไร?

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

อาร์เรย์คืออะไร?

แสดงในรูปที่ 1 เป็นส่วนของรหัสที่ใช้เพื่อประกาศและกำหนดค่าให้กับอาเรย์ รูปที่ 2 แสดงให้เห็นว่าอาร์เรย์จะมีลักษณะอย่างไรในหน่วยความจำ ค่า int

[5];

ค่า [0] = 100;

ค่า [1] = 101;

ค่า [2] = 102;

ค่า [3] = 103;

ค่า [4] = 104;

รูปที่ 1: รหัสสำหรับประกาศและกำหนดค่าให้กับอาร์เรย์

100

101 102 103 104 ดัชนี: 0
1 2 < 3 4 รูปที่ 2: อาร์เรย์ที่จัดเก็บไว้ในหน่วยความจำ รหัสข้างต้นกำหนดอาร์เรย์ที่สามารถจัดเก็บจำนวนเต็ม 5 ตัวและสามารถเข้าถึงได้โดยใช้ดัชนี 0 ถึง 4 คุณสมบัติที่สำคัญอย่างหนึ่งของอาร์เรย์คือ อาร์เรย์ทั้งหมดจะถูกจัดสรรเป็นหน่วยความจำเดี่ยวและแต่ละองค์ประกอบจะมีพื้นที่ว่างในอาร์เรย์ เมื่อกำหนดอาร์เรย์แล้วขนาดของไฟล์จะได้รับการแก้ไข ดังนั้นถ้าคุณไม่แน่ใจเกี่ยวกับขนาดของอาร์เรย์ที่รวบรวมเวลาคุณจะต้องกำหนดอาร์เรย์ขนาดใหญ่พอที่จะอยู่ในด้านความปลอดภัย แต่ส่วนมากแล้วเราจะใช้องค์ประกอบน้อยกว่าที่เราจัดสรรไว้ ดังนั้นจำนวนมากของหน่วยความจำจะเสียจริง ในทางกลับกันถ้า "อาร์เรย์ขนาดใหญ่พอ" ไม่ใหญ่เพียงพอโปรแกรมจะผิดพลาด

ความแตกต่างระหว่าง Pointers and Arrays คืออะไร?

ตัวชี้เป็นชนิดข้อมูลที่จัดเก็บที่อยู่ของตำแหน่งหน่วยความจำซึ่งเก็บข้อมูลบางส่วนไว้ขณะที่อาร์เรย์เป็นโครงสร้างข้อมูลที่ใช้มากที่สุดเพื่อจัดเก็บชุดขององค์ประกอบ ในภาษาโปรแกรม C การทำดัชนีอาร์เรย์ทำได้โดยใช้ตัวชี้เลข (i. e องค์ประกอบ x ของอาร์เรย์ x จะเท่ากับ * (x + i))ดังนั้นใน C, ชุดของตัวชี้ที่ชี้ไปยังชุดของสถานที่หน่วยความจำที่ติดต่อกันสามารถคิดเป็นอาร์เรย์ นอกจากนี้มีความแตกต่างในวิธีการดำเนินการ sizeof ดำเนินการเกี่ยวกับคำแนะนำและอาร์เรย์ เมื่อนำไปใช้กับอาร์เรย์ตัวดำเนินการ sizeof จะส่งกลับขนาดทั้งหมดของอาร์เรย์ในขณะที่เมื่อนำไปใช้กับตัวชี้ก็จะส่งกลับเพียงขนาดของตัวชี้