Con trỏ (Pointers)
Con trỏ được dùng để lưu trữ địa chỉ của một biến.
Cú pháp
Kiểu *con_trỏ;
Khởi tạo
Kiểu *con_trỏ; con_trỏ = tên_biến;
Tham chiếu (References)
Khi một biến được khai báo là tham chiếu, nó trở thành một tên thay thế cho một biến đã tồn tại.
Cú pháp
Kiểu &tên_mới = tên_đã_có;
Khởi tạo
Kiểu &tham_chiếu; tham_chiếu = tên_biến;
Các khác biệt chính giữa con trỏ và tham chiếu:
Tham chiếu dùng để gọi một biến đã có bằng một tên khác, trong khi con trỏ lưu địa chỉ của biến.
Tham chiếu không thể gán giá trị null, nhưng con trỏ có thể.
Một biến tham chiếu có thể được truyền bằng truyền giá trị, trong khi con trỏ có thể được truyền bằng truyền tham chiếu.
Tham chiếu phải được khởi tạo ngay khi khai báo, còn con trỏ thì không bắt buộc.
Tham chiếu chia sẻ cùng địa chỉ bộ nhớ với biến gốc nhưng cũng chiếm chút không gian trên stack, còn con trỏ có địa chỉ và kích thước riêng trên stack.