Biến cục bộ và biến toàn cục là gì

Trong bài này chúng ta sẽ học cách khai báo biến cục bộ và biến toàn cục, phạm vi hoạt động của các biến như thế nào? Cũng như làm một số bài tập liên quan tới việc khai báo biến.

Đây là những kĩ năng cơ bản nhất khi học lập trình, hãy nhớ kĩ các tính chất của nó nhé

Mục Lục

Biến là gì?

Giá trị của biến có thể thay đổi bất cứ lúc nào trong suốt quá trình mà chương trình chạy. Biến được dùng để lưu trữ dữ liệu mà cần được thay đổi trong quá trình chương trình thực hiện.

Cú pháp khai báo biến: <kiểu dữ liệu><dấu cách><tên biến>;

VD:

int a;

float b;

Chúng ta có thể gán giá trị ban đầu cho biến khi khai báo. VD:

int a = 100; // khai báo biến tên a có giá trị là kiểu số nguyên 100

float b = 0.1; // khai báo biến tên b có giá trị là kiểu số thực 0.1

char c = 'A'; // khai báo kí tự tên là C có giá trị là kí tự A

string s = "Hello anh em";// khai báo chuỗi kí tự tên là s có giá trị là Hello anh em

Có 3 loại biến cơ bản:

  • Biến cục bộ
  • Biến toàn cục
  • Các biến đặc biệt static, volatite, register …

Khai báo biến cục bộ và tính chất của chúng

Biến cục bộ, là các biến được khai báo trong một hàm. Biến đó sẽ chỉ có thể tồn tại và sử dụng bên trong hàm. Biến cục bộ sẽ được cấp phát khi hàm đó được gọi và sẽ được giải phóng khi hàm kết thúc thực thi.

Các biến cục bộ trong các hàm có tên giống nhau nhưng khai báo trong các hàm khác nhau vẫn có thể sử dụng bình thường. Ví dụ như thế này cho dễ hiểu. Có 2 người tên là Hương nhưng 1 Hương ở nhà A và 1 ở nhà B, thì đó là 2 người hoàn toàn khác nhau. Nhưng nếu có 2 Hương trong cùng 1 nhà A thì sẽ dẫn tới lỗi.

include <stdio.h>

void nha_a(void) { int a; // biến cục bộ sẽ bị giải phóng khi hàm kết thúc a = 100; printf("a cua nha_a = %d \n", a); } void nha_b(void) { int a; // biến cục bộ sẽ bị giải phóng khi hàm kết thúc a = 200; printf("a cua nha_b = %d \n", a); } int main() { nha_a(); nha_b(); return

Kết quả

Biến cục bộ và biến toàn cục là gì

Khai báo biến toàn cục tính chất của chúng

Với biến toàn cục, là biến được khai báo bên ngoài hàm, có thể được truy xuất và sử dụng ở mọi hàm trong chương trình. Biến toàn cục được cấp phát bộ nhớ khi chương trình hoạt động và giải phóng khi chương trình kết thúc.

Các biến toàn cục chỉ có thể sử dụng trong file.c đó, nếu muốn sử dụng trong file.c khác chúng ta phải sử dụng từ khóa extern khi khai báo biến toàn cục

Trong 1 chương trình C, ta có thể khai báo biến toàn cục và biến cục bộ có tên giống nhau. Nhưng khi ở trong hàm, hàm sẽ ưu tiên sử dụng biến cục bộ được khai báo. VD:

Ở 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 và 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.

Thế nào là biến cục bộ thế nào là biến toàn cục?

Biến toàn cục là biến được khai báo ở phân cấp cao hơn vị trí đang xác định. Biến cục bộ là biến được khai báo ở cùng phân cấp tại vị trí đang xác định.

Biến toàn cục là biến gì?

Trong lập trình máy tính, biến toàn cục (tiếng Anh: global variable) là một biến có tầm vực toàn cục, nghĩa là nó có thể nhìn thấy (và do vậy truy xuất được) trong toàn bộ chương trình, trừ khi bị che (variable shadowing).

Các biến cục bộ là gì?

Biến cục bộ (Local variables) Biến được định nghĩa bên trong một khối lệnh (block) được gọi là các biến cục bộ (Local variables). Các biến cục bộ có thời gian tự động, có nghĩa là chúng được tạo tại thời điểm định nghĩa, và bị hủy khi ra khỏi khối lệnh mà biến đó được định nghĩa.

Biến cục bộ trong C là gì?

Là các biến được khai báo trong một hàm. Biến đó sẽ chỉ có thể tồn tại và sử dụng bên trong hàm. Nó sẽ được giải phóng khi hàm kết thúc thực thi. Trong 1 chương trình C, ta có thể khai báo biến toàn cục và biến cục bộ có tên giống nhau.