แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

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

ทั้ง“ ตัวชี้” และ“ การอ้างอิง” ใช้เพื่อชี้หรืออ้างอิงตัวแปรอื่น แต่ความแตกต่างพื้นฐานระหว่างทั้งคู่ก็คือตัวแปรตัวชี้จะชี้ไปยังตัวแปรที่มีการเก็บตำแหน่งหน่วยความจำไว้ ตัวแปรอ้างอิงเป็นนามแฝงสำหรับตัวแปรที่กำหนดให้กับมัน แผนภูมิเปรียบเทียบด้านล่างสำรวจความแตกต่างอื่น ๆ ระหว่างตัวชี้และการอ้างอิง

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบชี้การอ้างอิง
ขั้นพื้นฐานตัวชี้คือที่อยู่หน่วยความจำของตัวแปรการอ้างอิงเป็นนามแฝงสำหรับตัวแปร
ผลตอบแทนตัวแปรตัวชี้ส่งคืนค่าที่อยู่ที่อยู่ที่เก็บไว้ในตัวแปรตัวชี้ซึ่งนำหน้าด้วยเครื่องหมายตัวชี้ '*'ตัวแปรอ้างอิงส่งกลับที่อยู่ของตัวแปรนำหน้าด้วยเครื่องหมายอ้างอิง '&'
ผู้ประกอบการ*, ->&
การอ้างอิง Nullตัวแปรตัวชี้สามารถอ้างถึง NULLตัวแปรอ้างอิงไม่สามารถอ้างถึง NULL ได้
การเริ่มต้นสามารถสร้างตัวชี้แบบไม่มีการเริ่มต้นไม่สามารถสร้างการอ้างอิงที่ไม่ได้กำหนดค่าเริ่มต้นได้
เวลาเริ่มต้นตัวแปรตัวชี้สามารถเริ่มต้น ณ เวลาใดก็ได้ในโปรแกรมตัวแปรอ้างอิงสามารถเริ่มต้นได้ในเวลาที่สร้างเท่านั้น
เตรียมใช้งานใหม่ตัวแปรตัวชี้สามารถเริ่มต้นใหม่ได้หลายครั้งตามที่ต้องการตัวแปรอ้างอิงไม่สามารถเริ่มต้นใหม่อีกครั้งในโปรแกรม

ความหมายของตัวชี้

“ ตัวชี้” เป็นตัวแปรที่เก็บตำแหน่งหน่วยความจำของตัวแปรอื่น ตัวดำเนินการที่ใช้โดยตัวแปรพอยน์เตอร์คือ * และ -> การประกาศตัวแปรตัวชี้ประกอบด้วยชนิดข้อมูลพื้นฐานตามด้วยเครื่องหมาย '*' และชื่อตัวแปร

 พิมพ์ * var_name; 

ให้เราเข้าใจตัวชี้ด้วยความช่วยเหลือของตัวอย่าง

 int a = 4; int * ptr = & a; ศาล < 

ที่นี่เรามีตัวแปรจำนวนเต็ม a และตัวแปรตัวชี้ ptr ที่เก็บที่อยู่ของตัวแปร a

เลขคณิตของตัวชี้

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

หลายทาง

ตัวชี้ชี้ไปที่ตัวแปรตัวชี้อื่นซึ่งชี้ไปที่ค่าเป้าหมาย ตัวชี้ชนิดนี้เริ่มต้นได้เสมอด้วยที่อยู่ของตัวแปรตัวชี้อื่น การประกาศของตัวชี้ไปยังตัวชี้มีดังนี้

 พิมพ์ ** var_name; 

ลองศึกษาด้วยตัวอย่าง

 int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; ศาล < 

ตัวชี้ฟังก์ชั่น

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

จุดสำคัญที่ต้องจำเกี่ยวกับตัวชี้

  • ตัวแปรตัวชี้สามารถสร้างได้โดยไม่ต้องเริ่มต้นและสามารถเริ่มต้นได้ทุกที่ในโปรแกรม
  • ตัวแปรตัวชี้สามารถเริ่มต้นใหม่ให้กับตัวแปรอื่น
  • ตัวแปรตัวชี้สามารถอ้างถึง NULL

คำจำกัดความของการอ้างอิง

ตัวแปรอ้างอิงใช้เพื่ออ้างถึงตัวแปรที่กำหนดให้กับตัวแปรอ้างอิงนั้น โอเปอเรเตอร์ที่ใช้โดยตัวแปรอ้างอิงคือ '&' การประกาศตัวแปรอ้างอิงประกอบด้วยประเภทฐานตามด้วยเครื่องหมาย '&' และชื่อตัวแปร

 พิมพ์ & refer_var_name = var_ name; 

ที่นี่ประเภทคือประเภทข้อมูลผู้ประกอบการ & ยืนยันว่ามันเป็นตัวแปรอ้างอิง Refer_var_name เป็นชื่อของตัวแปรอ้างอิง var_name เป็นชื่อของตัวแปรซึ่งเราต้องการให้ตัวแปรอ้างอิงอ้างอิง

ให้เราเข้าใจตัวแปรอ้างอิงด้วยความช่วยเหลือของตัวอย่าง

 int a = 4; int & b = a; // b หมายถึง ab = 6; // ตอนนี้ a = 6 

ในที่นี้ตัวแปรของประเภท int ได้รับการกำหนดค่า 4 ตัวแปรอ้างอิงถูกกำหนดให้ตัวแปร a คือ b คือนามแฝงของ a ตอนนี้เมื่อเรากำหนดค่าอื่นให้กับ b เราจะปรับเปลี่ยนค่าของ a ดังนั้นจึงอาจกล่าวได้ว่าการเปลี่ยนแปลงที่ทำกับตัวแปรอ้างอิงจะเกิดขึ้นในตัวแปรที่อ้างอิงโดยตัวแปรอ้างอิงนั้น

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

ตัวแปรอ้างอิงสามารถใช้งานได้สามวิธี:

  • เป็นฟังก์ชั่นการคืนค่า
  • เป็นพารามิเตอร์ฟังก์ชั่น
  • เป็นการอ้างอิงแบบสแตนด์อโลน

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

  1. การอ้างอิงเหมือนกับการสร้างชื่ออื่นเพื่ออ้างอิงตัวแปรเพื่อให้สามารถอ้างอิงกับชื่ออื่นได้ ในทางกลับกันตัวชี้เป็นเพียงที่อยู่หน่วยความจำของตัวแปร
  2. ตัวแปรตัวชี้ถ้านำหน้าด้วย '*' จะคืนค่าของตัวแปรที่มีที่อยู่ถูกเก็บไว้ในตัวชี้ varaible ตัวแปรอ้างอิงเมื่อนำหน้าด้วย '&' จะส่งคืนที่อยู่ของตัวแปรนั้น
  3. ตัวดำเนินการตัวชี้คือ * และ -> ในขณะที่ตัวดำเนินการอ้างอิงคือ &.
  4. ตัวแปรพอยน์เตอร์ถ้าไม่มีที่อยู่ของตัวแปรใด ๆ ซึ่งชี้ไปที่ null ตัวแปรอ้างอิงไม่สามารถอ้างถึง Null ได้
  5. คุณสามารถสร้างตัวแปรตัวชี้ unitialized แต่เราสร้างการอ้างอิงเมื่อเราต้องการนามแฝงของตัวแปรบางอย่างเพื่อให้คุณไม่สามารถสร้างการอ้างอิง unitialize
  6. คุณสามารถเริ่มต้นตัวชี้ใหม่ได้ แต่เมื่อคุณเริ่มต้นใหม่จะไม่สามารถเริ่มต้นได้อีก
  7. คุณสามารถสร้างตัวชี้ที่ว่างเปล่าและเริ่มต้นได้ตลอดเวลา แต่คุณต้องเริ่มต้นการอ้างอิงใหม่เฉพาะเมื่อคุณสร้างการอ้างอิง

บันทึก:

Java ไม่รองรับพอยน์เตอร์

ข้อสรุป

ตัวชี้และการอ้างอิงทั้งสองจะใช้ในการชี้หรืออ้างอิงตัวแปรอื่น แต่ทั้งคู่ต่างกันในการใช้งานและการนำไปใช้งาน

Top