Bài này viết về khái niệm chung trong điện toán. Đối với khái niệm cụ thể hơn trong C++, xem Tham chiếu (C++).

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

|  |  |
| --- | --- |
|  | Tra ***dereference*** trong từ điển mở tiếng Việt Wiktionary |

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

| * x
* t
* s
Các kiểu dữ liệu |
| --- |
| Không xác định | 
* Bit
* Byte
* Trit
* Tryte
* Word
* Mảng bit

 |
| Số | 
* Độ chính xác tùy ý hay bignum
* Phức
* Thập phân
* Dấu phẩy tĩnh
* Dấu phẩy động
	+ Độ chính xác thấp
		- Minifloat
		- Bán chính xác
		- bfloat16
	+ Độ chính xác đơn
	+ Độ chính xác kép
	+ Độ chính xác bậc bốn
	+ Độ chính xác bậc tám
	+ Độ chính xác mở rộng
		- Long double
* Nguyên
	+ có dấu và không dấu
* Khoảng
* Hữu tỉ

 |
| Con trỏ | 
* Địa chỉ
	+ vật lý
	+ ảo
* Tham chiếu

 |
| Văn bản | 
* Ký tự
* Chuỗi
	+ kết thúc rỗng

 |
| Phức hợp | 
* Kiểu dữ liệu đại số
	+ tổng quát
* Mảng
* Mảng kết hợp
* Lớp
* Phụ thuộc
* Equality
* Quy nạp
* Giao
* Danh sách
* Đối tượng
	+ siêu đối tượng
* Kiểu tùy chọn
* Tích
* Bản ghi hay Struct
* Refinement
* Tập hợp
* Hợp
	+ tagged

 |
| Khác | 
* Boole
* Kiểu đáy
* Collection
* Kiểu liệt kê
* Ngoại lệ
* Kiểu hàm
* Kiểu dữ liệu mờ
* Kiểu dữ liệu đệ quy
* Đèn báo
* Stream
* Kiểu đỉnh
* Lớp kiểu
* Kiểu đơn vị
* Void

 |
| Chủ đềliên quan | 
* Kiểu dữ liệu trừu tượng
* Cấu trúc dữ liệu
* Tổng quát
* Kind
	+ siêu lớp
* Kiểu đối tượng
* Đa hình tham số
* Kiểu dữ liệu cơ bản
* Giao thức
	+ giao diện
* Đa hình dẫn xuất
* Hàm tạo kiểu
* Chuyển đổi kiểu
* Hệ thống kiểu
* Lý thuyết hình thái
* Biến

 |