Biến tham chiếu (Reference)
Biến tham chiếu là một tên thay thế (alias) cho một biến đã tồn tại. Nó không thể thay đổi để tham chiếu đến biến khác và phải được khởi tạo ngay tại khai báo. Tham chiếu không thể là NULL. Toán tử & dùng để khai báo tham chiếu.
Cú pháp:
datatype variable_name; // Khai báo biến
datatype& refer_var = variable_name; // Khai báo tham chiếu
Trong đó:
- datatype – Kiểu dữ liệu (int, char, float...)
- variable_name – Tên biến gốc
- refer_var – Tên biến tham chiếu
Ví dụ tham chiếu
#include <iostream>
using namespace std;
int main() {
int a = 8;
int& b = a;
cout << "Bien a: " << a;
cout << "\nTham chieu b: " << b;
return 0;
}
Kết quả:
Bien a: 8
Tham chieu b: 8
Con trỏ (Pointer)
Con trỏ là biến lưu trữ địa chỉ của biến khác. Khi cấp phát bộ nhớ cho biến, con trỏ trỏ đến địa chỉ đó.
Cú pháp:
datatype *variable_name;
Ví dụ con trỏ
#include <stdio.h>
int main() {
int a = 8;
int *ptr;
ptr = &a;
printf("Gia tri bien: %d\n", a);
printf("Dia chi bien: %p\n", (void*)ptr);
printf("Gia tri qua con tro: %d\n", *ptr);
return 0;
}
Kết quả:
Gia tri bien: 8
Dia chi bien: 0x7ffc...
Gia tri qua con tro: 8
So sánh và khi nào dùng cái nào
| Tiêu chí | Reference | Pointer |
|---|---|---|
| Khởi tạo | Bắt buộc tại khai báo | Có thể khởi tạo sau |
| Gán lại | Không thể | Có thể trỏ đến biến khác |
| NULL | Không thể | Có thể |
| Cú pháp truy cập | Giống biến thường (ref) | Cần giải tham chiếu (*ptr) |
| An toàn | Cao hơn (không null, không gán lại) | Linh hoạt hơn nhưng rủi ro cao hơn |
Khuyên dùng: Ưu tiên reference khi chỉ cần alias cho biến (tham số hàm, trả về tham chiếu). Dùng pointer khi cần cấp phát động, mảng, optional parameters (có thể NULL), hoặc tương tác C-style API.