Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Pointers ใน C/C++ เทียบกับ References ใน Java


Pointers (ตัวชี้) ใน C/C++

Pointer คือ ตัวแปรที่เก็บที่อยู่ในหน่วยความจำ (memory address) ของตัวแปรอีกตัวหนึ่ง

ตัวอย่าง

#include <iostream>
using namespace std;

int main() {
    int i = 8;           // ตัวแปร int
    int *pI;             // ตัวแปร pointer
    pI = &i;             // กำหนด address ของ i ให้ pI
    cout << i << endl;   // พิมพ์ค่า: 8
    cout << pI << endl;  // พิมพ์ address: 0x7fee1ae7bc94
    cout << *pI << endl; // พิมพ์ค่าที่ pI ชี้: 8
    *pI = 10;            // เปลี่ยนค่าผ่าน pointer
    cout << i << endl;   // พิมพ์ค่าใหม่: 10
}

ผลลัพธ์

8
0x7fee1ae7bc94
8
10

References (อ้างอิง) ใน Java

Reference ใน Java คือ ตัวแปรที่อ้างอิงถึงออบเจ็กต์ (object) ใช้เข้าถึง property และ method ของออบเจ็กต์นั้น

ตัวอย่าง

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

ความแตกต่างหลักระหว่าง Pointers และ References

  • No Pointer Arithmetic in Java: ใน C/C++ pointer สามารถ ++/-- เพื่อชี้ address ใหม่ได้ แต่ Java ไม่อนุญาต
  • No Pointer Manipulation in Java: Java ไม่อนุญาตการจัดการ pointer โดยตรง ทำให้ปลอดภัยกว่า Reference อาจเป็น null หรือชี้ object เท่านั้น
  • No Casting of pointers in Java: C/C++ แคสต์ int* เป็น char* ได้ แต่ Java แคสต์ได้เฉพาะ object ใน hierarchy เดียวกัน