Menu
CoddyTech

Phạm vi biến

Bài học 5 trên 17 trong khóa học Hàm trong C của Coddy.

Mỗi biến đều có phạm vi, tức là phần chương trình nơi bạn có thể sử dụng biến đó. Biến có thể là biến toàn cục hoặc biến cục bộ.

Biến cục bộ

Biến cục bộ được tạo bên trong một khối code, chẳng hạn như trong một hàm, và chỉ tồn tại ở đó. Bộ nhớ cho các biến này được cấp phát khi khối lệnh bắt đầu và được giải phóng khi khối lệnh kết thúc, đồng thời xóa các biến.

#include <stdio.h>
void message() {
   char *msg = "Coddy";
   printf("%s \n", msg);
}
int main(void) {
   char *title = "tech";
   message();
   printf("%s \n", title);
   return 0;
}

Trong hàm message, biến msg được định nghĩa. Tương tự, hàm main định nghĩa biến title. Bạn không thể dùng các biến này bên ngoài hàm tương ứng. Ví dụ, bạn không thể dùng biến msg trong hàm main vì phạm vi của biến này chỉ giới hạn trong hàm message.

Nguyên tắc tương tự cũng áp dụng cho các biến được định nghĩa bên trong những khối code lồng nhau, chẳng hạn như các vòng lặp if, else, switch, case, for, while và do..while.

Biến toàn cục

Biến toàn cục được định nghĩa trong tệp chương trình, bên ngoài mọi hàm. Mọi hàm trong tệp đó đều có thể sử dụng các biến này.

#include <stdio.h>
int a = 12;
void increment()
{
   a++;
   printf("a=%d \n", a);
}
int main(void)
{
   increment();          
   a++;
   printf("a=%d \n", a);    
    
   return 0;
}

Đầu ra:

a=13 
a=14 

Ở đây, mọi hàm đều có thể thấy biến a vì biến này được khai báo toàn cục.

 

challenge icon

Thử thách

Dễ

Thử dùng biến toàn cục nhé:

  • Định nghĩa một biến toàn cục có tên <strong>gv</strong> bên ngoài mọi hàm và gán cho biến giá trị 20. 
  • Sửa đổi hàm increment để dùng biến toàn cục này. 
  • Viết một hàm mới có tên decrement để giảm giá trị của biến toàn cục và in ra giá trị đó. 
  • In ra giá trị của biến trong hàm main.

Đầu ra sẽ giống như sau:

Global variable after increment: 21 
Global variable after decrement: 20 
Global variable in main: 20 

Tự làm thử

#include <stdio.h>

// Định nghĩa biến toàn cục tên là gv và gán giá trị 20 cho biến đó


// Sửa hàm increment
void increment() {
   
    printf("Global variable after increment: %d \n", gv);
}

// Định nghĩa hàm decrement


int main(void) {
    
    increment();
    decrement();
    // In biến ra 
    
    return 0;
}

Tất cả bài học trong Hàm trong C

Tự luyện tập: Trình biên dịch C online