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

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 
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ụ 
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 
 Kiểu tham chiếu
 Trừu tượng (công nghệ phần mềm)
 :en:Autovivification
 :en:Bounded pointer
 Dereferenceable Uniform Resource Identifier
 :en:Magic cookie
 Biến (khoa học máy tính)
 Tham chiếu yếu

Tham khảo

Liên kết ngoài 

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

Kiểu dữ liệu
Khái niệm ngôn ngữ lập trình
Kiểu dữ liệu cơ bản