🌱 Biến tham chiếu trong C++ (Reference variables)

🌱 Biến tham chiếu trong C++ (Reference variables)

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

    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

    Đối với các biến có từ khóa const, thì các biến tham chiếu đến cũng cần có từ khóa const.

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

Để theo dõi những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

                  

Nguyễn Văn Nghĩa

Mình là một người thích học hỏi và chia sẻ các kiến thức về Nhúng IOT.

Đăng nhận xét

Mới hơn Cũ hơn