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

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

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

วีดีโอ: ความแตกต่างระหว่างตัวชี้และอาร์เรย์
วีดีโอ: C# beginners :- Assembly , EXE and DLL 2024, กรกฎาคม
Anonim

ตัวชี้เทียบกับอาร์เรย์

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

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

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

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

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

int ค่า[5];

values[0]=100;

values[1]=101;

values[2]=102;

values[3]=103;

values[4]=104;

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

100 101 102 103 104
ดัชนี: 0 1 2 3 4

รูปที่ 2: Array ที่เก็บไว้ในหน่วยความจำ

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

พอยน์เตอร์กับอาร์เรย์ต่างกันอย่างไร

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