Khoảng giá trị, phạm vi của biến trong C++

0
phạm vi của biến
phạm vi của biến

Mọi biến đều có giá trị xác định riêng của nó, tuy có thể thay đổi nhưng nó luôn nằm trong một khu vực xác định và hoạt động chỉ trong đó. Khu vực hoạt động này được gọi là Phạm vi của biến. Nếu như một giá trị của biến bằng cách nào đó vượt ra khỏi phạm vi của biến thì biến đó sẽ coi như không có giá trị hoặc không tồn tại nữa.

Trong C++, hầu hết các trường hợp được khai báo biến với dấu ngoặc nhọn {…} nơi mà biến được khai báo. Tùy theo phạm vi, ta chia biến thành 2 loại:

  • Biến toàn cục (global variable)
  • Biến cục bộ (local variable)

Đây chỉ là một số biến thường được dùng, ngoài ra ta còn một loại khá đặc biệt so với 2 loại trên và nó liên quan trực tiếp đến vấn đề khởi tạo, ta gọi là biến tĩnh (static variable). Sau đây AD sẽ cùng mọi người đi tìm hiểu 2 loại biến đầu tiên đó là Biến toàn cục và biến cục bộ, để biêt thêm biến là gì có thể truy cập vào link sau : https://anonymousvn.org/hoc-c-bien-va-kieu-du-lieu-trong-c.hav

Biến toàn cục

Biến toàn cục là biến một khi đã được khai báo thì có thể được sử dụng tại bất kỳ đâu hay bất kỳ file cpp nào cùng solution (cần dùng extern khi dùng ở file khác) trong suốt quá trình chương trình bạn viết được thực thi. Biến toàn cục phải được khai báo ngoài hàm main(). Nếu chỉ khai báo chứ không khởi tạo, biến toàn cục sẽ được gán giá trị mặc định bằng 0,tuy nhiên sau này bạn vẫn có thể sử dụng biến này với hoạt động khác bằng cách gán lại giá trị mới cho nó.

Ví dụ như sau:


#include <iostream>
using namespace std;

// Khai bao bien toan cuc x
int x;

int main()
{
// Gan gia tri
x = 10 ;
cout << x;

// Gan gia tri
x = 20 ;
cout << x ;
}

Biến cục bộ

Biến cục bộ, ở đây hiểu là biến chỉ có giá trị nằm giữa hai dấu {…} tại chính nơi nó được khai báo. Khi nằm ngoài phạm vi của biến này, nó sẽ được coi là không tồn tại và nếu bạn tiếp tục sử dụng nó thì chắc chắn sẽ gây ra lỗi. Nếu biến cục bộ không được khởi tạo thì nó sẽ mang giá trị rác


#include <iostream>
using namespace std;

int main()
{
int i = 5;
if (i < 10)
{ // Bat dau pham vi if

// Khai bao va khoi tao bien cuc bo n
int n = 1;
} // Ket thuc pham vi if

// Bien dich loi - Compile error do bien n khong ton tai
cout << n;
}

Đầu tiên ad chỉ định viết về 2 loại biến kia thôi 😀 nhưng thôi đã nói rồi thì ad bonus thêm cho các bạn kiến thức về biến tĩnh trong phạm vi của biến luôn nhé.

Biến tĩnh trong phạm vi của biến

Giống như biến toàn cục, biến tĩnh hay còn gọi là static tồn tại từ lúc được khai báo đến khi chương trinh kết thúc. Giá trị mặc định nếu không được khởi tạo cũng là 0. Tuy nhiên, biến static chỉ có thể truy xuất từ trong phạm vi của nó và giá trị vẫn được giữ lại chứ không hề thay đổi.

  • Nếu khai báo giữa hai dấu {…}, biến static chỉ có thể truy xuất ở trong 2 dấu này.
  • Nếu khai báo toàn cục, tức không thuộc khối {…} nào hết, biến static có thể truy xuất từ trong file *.cpp đó chứ không thể truy xuất sang file .cpp khác mặc dù cùng solution.

#include <iostream>
using namespace std;

// Khai bao bien static toan cuc x
static int x;

void foo()
{
// Khai bao bien static cuc bo y
static int y;

cout << x; // Co the truy xuat
cout << y; // Co the truy xuat
}

int main()
{
cout << x; // Co the truy xuat
cout << y; // Khong the truy xuat vi ngoai pham vi y
}

Leave A Reply

Your email address will not be published.