ความแตกต่างระหว่างตัวชี้และการอ้างอิง | ตัวชี้และข้อมูลอ้างอิง

Anonim

ความแตกต่างที่สำคัญ - ตัวชี้และข้อมูลอ้างอิง

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

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

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

ในไวยากรณ์ของ C + +;

int i = 5;

int * ptr = & i;

บรรทัดแรกกำหนดตัวแปรที่เริ่มต้นด้วยค่า 5 บรรทัดที่สองกำหนดตัวชี้ไปยังที่อยู่หน่วยความจำของตัวแปร ที่นี่ 'ptr' ถูกประกาศว่าเป็น object ของ type 'pointer to int' ซึ่งค่าเริ่มต้นคือที่อยู่ของ i object ตัวแปรตัวแปร ptr ชี้ไปที่ i โดยเก็บที่อยู่หน่วยความจำไว้

การได้รับค่าที่เก็บอยู่ในตำแหน่งหน่วยความจำเรียกว่า dereferencing โอเปอเรเตอร์ * ถูกใช้เพื่อทำดัชนีตัวชี้วัด หลังจากการประกาศเสร็จสิ้นการแสดงออกทางอ้อม * ptr dereferences ptr เพื่ออ้างถึง i.

การเปลี่ยนค่าของ i สามารถใช้งานต่อไปนี้ได้

* ptr = 20;

ตัวชี้อาจถูกกำหนดใหม่เพื่ออ้างถึงวัตถุที่แตกต่างกันเช่นกัน

null เป็นตัวชี้ชนิดพิเศษ ตัวชี้ null มักจะแสดงด้วย 0 หรือ null และชี้ไปที่ไม่มีอะไร การปฏิบัติที่ดีในการใช้ตัวชี้ null ในกรณีที่ไม่มีที่อยู่ที่แน่นอนที่จะกำหนดให้กับตัวชี้ งานนี้สามารถใช้ในการปฏิบัติงานและเงื่อนไขต่างๆได้

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

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

ตัวชี้จะได้รับการสนับสนุนในภาษาต่างๆเช่น C, C ++, Pascal และภาษาแอสเซมบลีหลายภาษา

Pointer a ชี้ไปยังที่อยู่หน่วยความจำที่เกี่ยวข้องกับตัวแปร b.

การอ้างอิงคืออะไร?

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

ในไวยากรณ์ของ C + +;

int i = 5;

int & ref = i;

บรรทัดแรกกำหนดตัวแปรที่เริ่มต้นด้วยค่า 5 บรรทัดที่สองประกาศว่า 'ref' เป็นอ็อบเจ็กต์ 'reference to int' ซึ่งหมายถึง i การอ้างอิงจะแตกต่างจากข้อมูลที่ระบุว่าการอ้างอิงถูกนำมาใช้เป็นที่อยู่จริงของข้อมูลเฉพาะที่เก็บอยู่ในหน่วยความจำ

เมื่อกำหนดแล้วอ้างอิงไม่สามารถกำหนดค่าใหม่ได้ การอ้างอิงหมายถึงวัตถุที่มีการเตรียมใช้งานอยู่เสมอ ในการกำหนดต่อไป ref ยังคงหมายถึง i แต่ค่านี้เท่ากับ 20.

ref = 20;

ตามตัวอย่างข้างต้นการอ้างอิง dereferencing ไม่จำเป็นต้องมีโอเปอเรเตอร์ใด ๆ

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

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

ภาษาเขียนโปรแกรมเช่น C ++, Java, Python, Perl, PHP, Ruby เป็นต้นสนับสนุนการอ้างอิง

อะไรคือความแตกต่างระหว่าง Pointer กับ Reference?

ความหมายของตัวชี้และตัวอ้างอิง

ตัวชี้: ตัวชี้เป็นที่อยู่หน่วยความจำของอ็อบเจ็กต์ที่เก็บอยู่ในหน่วยความจำคอมพิวเตอร์

การอ้างอิง: การอ้างอิงเป็นตัวระบุอื่นหรือนามแฝงของวัตถุ

ลักษณะของตัวชี้และการอ้างอิง

คำประกาศ

ตัวชี้: มีการประกาศตัวชี้กับผู้ดำเนินการ *

การอ้างอิง: มีการประกาศข้อมูลอ้างอิงกับผู้ดำเนินการ &

Dereferencing

ตัวชี้: ตัวแปรตัวชี้ต้องการผู้ดำเนินการ * ที่จะถูกแยกออกจากกัน

การอ้างอิง: ตัวแปรอ้างอิงไม่จำเป็นต้องใช้ตัวดำเนินการใด ๆ

การเริ่มต้น

ตัวชี้: คำแนะนำสามารถเริ่มต้นเป็นโมฆะได้ตัวแปรดังกล่าวเรียกว่า null pointers

การอ้างอิง: การอ้างอิงไม่สามารถเริ่มต้นเป็นโมฆะได้ ไม่มีสิ่งเช่นการอ้างอิงเป็นโมฆะ การอ้างอิงต้องอ้างอิงถึงวัตถุเสมอ

การมอบหมายใหม่

ตัวชี้: ตัวแปรพอยน์เตอร์อาจถูกกำหนดใหม่เพื่ออ้างอิงกับอ็อบเจ็กต์ต่างๆ

การอ้างอิง: ไม่สามารถกำหนดตัวแปรการอ้างอิงใหม่ได้ มันมักจะหมายถึงวัตถุที่มีการเริ่มต้น

การใช้งาน

Pointer: ควรใช้ตัวแปรตัวชี้เมื่อไม่สามารถอ้างถึงสิ่งที่ไม่มีอยู่หรือเมื่อต้องอ้างอิงถึงสิ่งต่างๆในเวลาที่ต่างกัน

Reference: ควรใช้ตัวแปรอ้างอิงเมื่อมีวัตถุอ้างอิงและเมื่อไม่จำเป็นต้องใช้ตัวแปรอ้างอิงดังกล่าวเพื่ออ้างถึงสิ่งอื่นที่ไม่ใช่วัตถุนั้น

การใช้งาน

ตัวชี้: ตัวแปรตัวชี้สามารถใช้เพื่อใช้อัลกอริทึมและโครงสร้างข้อมูลได้

การอ้างอิง: ตัวแปรอ้างอิงสามารถใช้ในพารามิเตอร์ของฟังก์ชันและชนิดการตอบกลับกำหนดอินเทอร์เฟซที่เป็นประโยชน์ได้

ภาษาที่ใช้:

ตัวชี้: ภาษาการเขียนโปรแกรมเช่น C, C ++, Pascal และตัวสนับสนุนหลายภาษาสำหรับการประกอบ

การอ้างอิง: ภาษาโปรแกรมเช่น C + +, Java, Python, Perl, PHP, Ruby ฯลฯ สนับสนุนการอ้างอิง

ภาพมารยาท: "Pointers" โดยไฟล์นี้ทำโดยผู้ใช้: SvenTranslation งานของตัวเอง ภาพเวกเตอร์นี้สร้างขึ้นด้วย Inkscape (CC BY-SA 3. 0) ผ่านทาง Commons -