static - biến tĩnh

Giới thiệu

Biến tĩnh là biến sẽ được tạo ra duy nhất một lần khi gọi hàm lần đầu tiên và nó sẽ không bị xóa đi để tạo lại khi gọi lại hàm ấy. Đây là sự khác biệt giữa biến tĩnh và biến cục bộ.

Biến tĩnh là loại biến lưỡng tính, vừa có tính chất của 1 biến toàn cục, vừa mang tính chất của 1 biến cục bộ:

  • Tính chất 1 biến toàn cục: biến không mất đi khi chương trình con kết thúc, nó vẫn nằm trong ô nhớ của chương trình và được tự động cập nhật khi chương trình con được gọi lại. Giống như 1 biến toàn cục vậy.
  • Tính chất 1 biến cục bộ: biến chỉ có thể được sử dụng trong chương trình con mà nó được khai báo.

Để khai báo bạn chỉ cần thêm từ khóa "static" trước khai báo biến. Xem ví dụ để rõ hơn.

Ví dụ

void setup(){
  Serial.begin(9600); // Khởi tạo cổng Serial ở baudrate 9600
}
void loop() {
  testStatus();// Chạy hàm testStatus
  delay(500); // dừng 500 giây để bạn thấy được sự thay đổi
}

void testStatus() {
  static int a = 0;// Khi khai báo biến "a" là biến tĩnh
  // thì duy nhất chỉ có 1 lần đầu tiên khi gọi hàm testStatus
  // là biến "a" được tạo và lúc đó ta gán "a" có giá trị là 0

  a++;
  Serial.println(a);
  // Biến a sẽ không bị mất đi khi chạy xog hàm testStatus
  // Đó là sự khác biệt giữa biến tĩnh và biến cục bộ!
}

 

lên
4 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Cách tự "hack" điều khiển thiết bị điện trong nhà chỉ với 30 phút

Một thiết bị điện thông minh hiện đại là phải "có thể lập trình được" để có thể làm theo ý mình. Với cuộc cách mạng công nghiệp 4.0, những sản phẩm IoT hiện này đã rất phổ biến. Những ý tưởng tưởng chừng như "điên rồ" trước đây thì nay đã trở thành hiện thực. Hãy cùng tôi "hack" vào cái công tắc điện trong nhà và dùng những tấm thẻ RFID để bật tắt điện trong nhà nhé.

lên
5 thành viên đã đánh giá bài viết này hữu ích.

Hướng dẫn nạp firmware mới hoặc tự cập nhật firmware cho các thiết bị iNut

Bạn muốn cập nhật firmware cho các thiết bị ESP8266 trong các thiết bị iNut nhưng chưa biết bắt đầu tư đâu? Bạn muốn nạp một firmware khác cho thiết bị iNut để có thể tận dụng phần cứng chất lượng và linh kiện đạt chuẩn CE, FCC của iNut? Đây là bài viết bỏ túi dành cho bạn để bạn giải quyết được vấn đề trên.

lên
11 thành viên đã đánh giá bài viết này hữu ích.