ตัวชี้
ในภาษา 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 สามารถส่งได้เฉพาะอ็อบเจ็กต์ที่เกี่ยวข้องเท่านั้น เช่น วัตถุที่มีลำดับชั้นเดียวกัน