Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

So sánh Con trỏ C/C++ và Tham chiếu Java


Con trỏ (Pointers)

Trong C, C++, con trỏ là biến chứa địa chỉ của biến khác.

Ví dụ

#include <iostream>
using namespace std;

int main() {
    // biến int
    int i = 8;
    // biến con trỏ
    int *pI;
    // gán địa chỉ của i cho con trỏ
    pI = &i;
    // in số
    cout << i << endl;
    // in địa chỉ
    cout << pI << endl;
    // in giá trị con trỏ trỏ tới
    cout << *pI << endl;
    // thay đổi giá trị qua con trỏ
    *pI = 10;
    // in lại số
    cout << i << endl;
}

Đầu ra

8
0x7fee1ae7bc94
8
10

Tham chiếu (References)

Trong Java, tham chiếu là biến tham chiếu đến một đối tượng, dùng để truy cập thuộc tính/phương thức của đối tượng.

Ví dụ

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; }
}

Đầu ra

Mahesh

Khác biệt giữa Con trỏ và Tham chiếu

  • Không có phép toán con trỏ trong Java. Con trỏ là địa chỉ bộ nhớ. Trong C/C++ có thể tăng/giảm con trỏ để trỏ địa chỉ mới, nhưng Java không cho phép phép toán trên tham chiếu.

  • Không thao tác con trỏ trong Java. Dù tham chiếu nội bộ dùng con trỏ, Java không cho phép thao tác con trỏ qua biến tham chiếu. Làm Java an toàn và vững chắc hơn. Tham chiếu chỉ tham chiếu đối tượng hoặc null.

  • Không ép kiểu con trỏ trong Java. C/C++ cho phép ép int* sang char*, Java chỉ cho ép các đối tượng liên quan (cùng hệ thống phân cấp).