🌱 Biến tham chiếu trong C++ (Reference variables)
Trên blog mình đã từng đề cập đến một khái niệm tham chiếu trong C. Trong C++ có thể một thuật ngữ về tham chiếu, đó là biến tham chiếu - Reference Variables.Trong bài ta sẽ cùng tìm hiểu các vấn đề:
- Biến tham chiếu trong C++
- Tham chiếu dưới dạng Alias
- Tham chiếu như một tham số hàm
- So sánh tham chiếu và con trỏ
- Lưu ý khi sử dụng tham chiếu
👉 Biến tham chiếu trong C++
Biến tham chiếu - Reference Variables, là một tên gọi khác cho một biến đã tồn tại. Nó cho phép thao tác lên cùng một vùng nhớ bằng các tên gọi khác nhau.
Khai báo tham chiếu bằng cách sử dụng toán tử &
int var = 10;
int &ref = var; // ref tham chiếu đến biến var
Trường hợp này, toán tử & được sử dụng với ý nghĩa là tham chiếu đến - Không mang ý nghĩa là lấy địa chỉ.
Trong C++, Biến tham chiếu ref chính là biến var, chỉ khác tên ⇒ chúng có cùng vị trí trên bộ nhớ, thay đổi biến này sẽ khiến biến kia thay đổi theo.
🔻 Hãy theo dõi ví dụ dưới đây về Reference Variables,
#include <iostream>
#include <iostream>
using namespace std;
void incre(int &ref) // ref là biến tham chiếu
{
cout << "ref = " << ref << endl;
ref = 2;
cout << "ref = " << ref << endl;
} // ref bị hủy sau khi thoát ra khỏi hàm
int main()
{
int x = 1;
cout << "x = " << x << endl;
incre(x);
cout << "x = " << x << endl;
return 0;
}
Run This Code
➥ Các bạn có thể bấm "Run This Code", kết quả hiển thị trên màn hình console như sau.
x = 1
ref = 1
ref = 2
x = 2
👉 Tham chiếu và con trỏ
Dễ thấy, đối với cách sử dụng đã nói ở trên, các dev ngôn ngữ C sẽ thấy tham chiếu có vẻ sử dụng tương đối giống với cách sử dụng con trỏ pointer để thay đổi đối số vào hàm (Trong C gọi là Pass by Reference - nhưng thực tế là truyền con trỏ / hay địa chỉ của biến vào trong hàm).
➤ C++ Pass by Pointer vs Pass by Reference
Tuy nhiên, trong C++ hỗ trợ khái nhiệm tham chiếu, nhìn chung an toàn hơn nhiều so với con trỏ khi thao tác (con trỏ có thể NULL hoặc ở trạng thái “lơ lửng” - chứa địa chỉ ngẫu nhiên).
Lưu ý: Nếu một vấn đề có thể được giải quyết bằng một tham chiếu hoặc một con trỏ, thì tham chiếu thường được ưu tiên.
Con trỏ chỉ nên được sử dụng trong các tình huống mà tham chiếu không hỗ trợ (ví dụ Cấp phát động).
👉 Lưu ý khi sử dụng tham chiếu
➤ Tham chiếu không thể gán giá trị NULL
Dễ thấy, khi khởi tạo, Reference Variable cần được gán giá trị bằng một biến cụ thể, không thể mang giá trị NULL.
int var = 10; int &ref = var; // ok int &invalidRef; // invalid, needs to reference something
➤ Tham chiếu và constant
int var = 10; int &ref1 = var; // ok const int constant = 7; int &ref2 = constant; // Invalid
int var1 = 5; const int &ref3 = var1; // ok const int constant1 = 7; const int &ref = constant1; // ok
➤ Tham chiếu không thể được khởi tạo lại
Sau khi khởi tạo thì không thể gán biến tham chiếu bằng một biến khác.
int value1 = 5;
int value2 = 6;
int &ref = value1; // ok
ref = value2; // Invalid
👉 Kết luận
Reference Variable là một khái niệm quan trọng và sử dụng nhiều trong C++, các bạn có thể xem thêm các bài viết hoặc làm các ví dụ để sử dụng tốt hơn Reference Variables.
>>>= Follow ngay =<<<