Tham chiếu (khoa học máy tính)

(Đổi hướng từ Tham chiếu)

Trong khoa học máy tính, tham chiếu (tiếng Anh: reference) là một giá trị cho phép chương trình truy xuất gián tiếp tới một số liệu cụ thể, như một biến hay một bản ghi, trong bộ nhớ máy tính hay trong các thiết bị lưu trữ khác. Quá trình mà tham chiếu chỉ đến (refer) dữ liệu, và truy xuất dữ liệu được gọi là tham chiếu ngược (dereferencing) đến tham chiếu.

Một tham chiếu thì khác với chính dữ liệu đó. Thường thì, để tham chiếu đến dữ liệu chứa trong bộ nhớ của một hệ thống nhất định, một tham chiếu được hiện thực như là địa chỉ vật lý của nơi mà dữ liệu được chứa trong bộ nhớ hay trong thiết bị lưu trữ. Vì lý do này, tham chiếu thường bị nhầm lẫn một cách sai lệch với con trỏ hay địa chỉ vùng nhớ, và được nói là "trỏ đến" (point to) dữ liệu.

Lợi ích sửa

Tham chiếu tăng tính linh hoạt khi lưu trữ các đối tượng, cách nó được cấp phát, và cách chúng được truyền qua giữa các vùng mã. Chừng nào còn có thể truy xuất một tham chiếu đến dữ liệu, thì còn có thể truy xuất dữ liệu thông qua nó, và bản thân dữ liệu không cần thiết phải di chuyển. Nó cũng khiến việc chia sẻ dữ liệu giữa các vùng mã dễ dàng hơn; mỗi dữ liệu giữ một tham chiếu đến nói.

Ví dụ sửa

Con trỏ có tính nguyên thủy nhất. Do có mối quan hệ mật thiết với phần cứng bên dưới, nó là một trong những kiểu tham chiếu mạnh mẽ và hiệu quả nhất. Tuy nhiên, cũng do mối quan hệ này, con trỏ đòi hỏi lập trình viên phải có kiến thức mạnh về chi tiết của kiến trúc bộ nhớ. Bởi vì con trỏ chứa địa chỉ lưu trữ bộ nhớ, thay vì giá trị trực tiếp, việc sử dụng không đúng con trỏ có thể dẫn đến hành vi không xác định trong một chương trình, đặc biệt bởi vì con trỏ lạc (dangling pointer) hay con trỏ hoang dã (wild pointer). Con trỏ thông minh (smart pointer) là cấu trúc dữ liệu không rõ ràng (opaque pointer) hoạt động như con trỏ nhưng có thể chỉ được truy xuất thông qua các phương thức cụ thể.

Xem thêm sửa

Tham khảo sửa

Liên kết ngoài sửa

  • Pointer Fun With Binky Introduction to pointers in a 3-minute educational video - Stanford Computer Science Education Library