Biến tĩnh trong C

Cách làm việc với các biến tĩnh trong C

Bên trong một hàm, bạn có thể khởi tạo mộtbiến tĩnhsử dụngstatictừ khóa.

Tôi đã nói "bên trong một hàm", bởi vì các biến toàn cục là tĩnh theo mặc định, vì vậy không cần thêm từ khóa.

Biến tĩnh là gì? Một biến tĩnh được khởi tạo thành 0 nếu không có giá trị ban đầu nào được chỉ định và nó giữ nguyên giá trị qua các lần gọi hàm.

Hãy xem xét chức năng này:

int incrementAge() {
  int age = 0;
  age++;
  return age;
}

Nếu chúng tôi gọiincrementAge()một lần, chúng tôi sẽ nhận được1như giá trị trả về. Nếu chúng tôi gọi nó nhiều hơn một lần, chúng tôi sẽ luôn nhận lại được 1, bởi vìagelà một biến cục bộ và nó được khởi tạo lại thành0trên mọi lệnh gọi chức năng đơn lẻ.

Nếu chúng ta thay đổi hàm thành:

int incrementAge() {
  static int age = 0;
  age++;
  return age;
}

Bây giờ mỗi khi chúng ta gọi hàm này, chúng ta sẽ nhận được một giá trị tăng dần:

printf("%d\n", incrementAge());
printf("%d\n", incrementAge());
printf("%d\n", incrementAge());

sẽ cho chúng tôi

1
2
3

We can also omit initializing age to 0 in static int age = 0;, and just write static int age; because static variables are automatically set to 0 when created.

We can also have static arrays. In this case, each single item in the array is initialized to 0:

int incrementAge() {
  static int ages[3];
  ages[0]++;
  return ages[0];
}

Download my free C Handbook


More clang tutorials: