Bài 3 (tiếp theo): Biến toàn cục, biến cục bộ và phạm vi của biến

Ở bài trước, chúng ta đã cùng tìm hiểu về kiểu dữ liệu, cách khai báo và sử dụng hằng, biến. Trong bài viết này, ta sẽ tìm hiểu kĩ hơn về biến. Trong ngôn ngữ C/C++, biến có 2 loại: biến toàn cục biến cục bộ. Vậy chúng khác nhau ở điểm nào, phạm vi hoạt động của chúng ra sao ? Cùng xem nhé !

1. Biến cục bộ (local variables)

Biến cục bộ là biến:

– Được khai báo bên trong một khối lệnh nào đó.

– Chỉ được truy cập trong khối lệnh mà nó được khai báo và những “khối lệnh con” của khối lệnh đó.

– Bị huỷ khi khối lệnh kết thúc.

– Khi khai báo mà không khởi gán, biến cục bộ mang giá trị rác (Giá trị rác là giá trị bất kì nào đó không biết trước được).

2. Biến toàn cục (global variables)

Biến toàn cục là biến:

– Được khai báo bên ngoài tất cả các hàm, khai báo chung với các dòng khai báo thư viện.

– Có thể truy cập ở bất cứ đâu trong chương trình.

– Chỉ bị huỷ khi chương trình kết thúc.

– Khi khai báo mà không khởi gán, biến toàn cục mang giá trị 0.

Xét đoạn chương trình sau:

int n; //biến toàn cục
int main()
{
    int x, y; //biến cục bộ trong hàm main
    x = 5;
    y = 6;
    {
        int x = 4;
        printf("x (in sub block) = %d\n", x);
        y += 1;
    }
    printf("n = %d\n", n);
    printf("x (int main block) = %d\n", x);
    printf("y = %d\n", y);
}

Kết quả xuất ra màn hình:

n = 0
x (in sub block) = 4
x (in main block) = 5
y = 7

Giải thích thêm:

– Biến n là một ví dụ cho biến toàn cục, khi chỉ khai báo mà không khởi gán, giá trị của biến toàn cục là 0, và nó có thể được sử dụng bất cứ đâu trong chương trình.

– Biến x, y là 2 ví dụ về biến cục bộ, trong đó:

+ Biến y có thể được gọi trong khối lệnh mà nó được khai báo và trong các khối lệnh con.

+ Nhưng với x, ta thấy bên trong khối lệnh con, ta lại khai báo một biến x khác. Mình xin nhấn mạnh là một biến x khác. Trong trường hợp khai báo này, mọi thao tác đối với x chỉ ảnh hướng đến x bên trong khối lệnh con, hoàn toàn không ảnh hưởng đến x ở hàm main ví chúng là hai biến độc lập nhau.

Một số lưu ý (theo kinh nghiệm bản thân thôi nha):

– Không nên dùng biến toàn cục nếu không thật sự cần thiết, vì nó có thể được gọi ở bất cứ đâu. Giả sử bạn viết một chương trình lớn, khoảng 1000 dòng code chẳng hạn, mà dùng đến biến toàn cục, thì thật sự rất khó để kiểm soát được biến toàn cục trong 1000 dòng code đó, không biết nó đã được gọi ở chỗ nào.

– Hạn chế vấn đề “biến trùng tên” như trên để tránh sự “nhập nhằng”, khó hiểu cho chương trình.

Trên đây là một số vấn đề về biến toàn cục và biến cục bộ, Cảm ơn các bạn đã theo dõi !

Advertisement

Chia sẻ:

Thích bài này:

Thích

Đang tải…