Search…

Phạm Vi Của Biến

17/09/20203 min read
Tìm hiểu về phạm vi của biến trong C++.

Phạm vi của biến

Mọi biến đều có 1 khu vực để hoạt động, ngoài khu vực này, biến không còn giữ giá trị của nó nữa và coi như không tồn tại. Khu vực hoạt động này được gọi là Phạm vi của biến.

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

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

Ngoài ra còn 1 loại khá đặc biệt, liên quan đến vấn đề khởi tạo, gọi là biến tĩnh (static variable).

Biến toàn cục

Biến toàn cục là biến 1 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) suốt quá trình thực thi chương trình. 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 vẫn có thể được gán giá trị lại 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ộ là biến có phạm vi giữa 2 dấu {…} nơi nó được khai báo. Ngoài phạm vi này, nó sẽ không tồn tại và nếu sử dụng sẽ dẫn đến 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;
}

Biến tĩnh

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 qua các hàm.

  • 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 đó.
#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
}
IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024