ตัวชี้
ในภาษา C หรือ C++ ตัวชี้คือตัวแปรที่เก็บที่อยู่ของตัวแปรอื่น
ตัวอย่าง
#include <iostream> using namespace std; int main() { //int variable int i = 8; //pointer variable int * pI; //assign the address of i to its pointer pI = &i; //print the number cout<<i<<endl; //print the address of the number cout<<pI<<endl; //print the value pointed by pointer count<<*pI<<endl; //change the value of variable using its pointer *pI = 10; //print the number cout<<i<<endl; }
ผลลัพธ์
8 0x7fee1ae7bc94 8 10
ข้อมูลอ้างอิง
ในภาษาการเขียนโปรแกรมจาวา การอ้างอิงคือตัวแปรที่อ้างอิงถึงอ็อบเจ็กต์และการใช้งาน ซึ่งเราสามารถใช้ประโยชน์จากคุณสมบัติและฟังก์ชันของอ็อบเจกต์ได้
ตัวอย่าง
public class Tester { public static void main(String[] args) { Student student = new Student(); student.setName("Mahesh"); System.out.println(student.getName()); } } class Student { String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
ผลลัพธ์
Mahesh
ความแตกต่างระหว่างพอยน์เตอร์และการอ้างอิง
ต่อไปนี้เป็นข้อแตกต่างบางประการระหว่างพอยน์เตอร์ C/C++ และข้อมูลอ้างอิง
-
ไม่มี Pointer Arithmetic ใน Java ตัวชี้คือที่อยู่หน่วยความจำและตัวชี้จะชี้ไปยังที่อยู่หน่วยความจำของตัวแปร ใน C/C++ ตัวชี้สามารถเพิ่มขึ้น/ลดลงเพื่อชี้ไปยังที่อยู่ใหม่ได้ แต่ใน Java ไม่อนุญาตให้ดำเนินการทางคณิตศาสตร์ในการอ้างอิง
-
ไม่มีการจัดการตัวชี้ใน Java แม้ว่าการอ้างอิงภายในจะใช้ตัวชี้ แต่ Java ไม่อนุญาตให้มีการจัดการใด ๆ กับตัวชี้พื้นฐานโดยใช้ตัวแปรอ้างอิง ทำให้จาวาปลอดภัยและแข็งแกร่งยิ่งขึ้น การอ้างอิงสามารถอ้างถึงวัตถุหรือเป็นค่าว่างเท่านั้น
-
ไม่มีการแคสต์พอยน์เตอร์ใน Java ใน C/C++ เราสามารถแคสต์ int* เป็น char* ได้ แต่ใน Java สามารถส่งได้เฉพาะอ็อบเจ็กต์ที่เกี่ยวข้องเท่านั้น เช่น วัตถุที่มีลำดับชั้นเดียวกัน