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
3 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ả

Tạo một quy trình công nghiệp với các bước bằng Arduino

Như đã nói ở vấn đề trước Xử lý nhiều tiến trình cùng một lúc trên Arduino - Có thể hay không?, chúng ta có thể xử lý nhiều tiến trình trên Arduino theo cơ chế bất đồng bộ. Tuy nhiên, một vấn đề khá hay mà từ các bình luận ở bài viết đó, mình mới ngộ ra được, đó là làm thế nào để xây dựng một quy trình công việc thực sự trên một board mạch Arduino. Thiết nghĩ, điều đó, hoàn toàn có thể thực hiện được, và xin chia sẻ với mọi người qua bài viết này nhằm giúp tất cả chúng ta có một thư viện chuẩn để làm những công việc phức tạp hơn.

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

"Độ hoàn toàn" một cổng Terminal RS-232 mà không sử dụng jack 3.5mm

Ở Việt Nam, việc một bạn học sinh mua một mạch Intel Galileo khá là khó. Trong đó, khó nhất là tiền để mua một mạch Intel Galileo, tuy nhiên, khi mua được mạch về, việc bạn có sử dụng hết chức năng của Intel Galileo hay không là một việc khác. Cái hay nhất, theo tớ nghĩ trên Intel Galileo, mà Arduino không có và bạn khó tiếp cận nhất đó là hệ điều hành Linux. Thực sự thì có nhiều cách để vào Linux của Intel Galileo. Tuy nhiên, nếu bạn muốn cài một hệ điều hành xịn như Debian để biến Intel Galileo trở thành một "máy tính" siêu "xịn" thì bạn buộc phải dùng tới cổng RS - 232. Nếu ở các trung tâm công nghệ lớn thì bạn có thể dễ dàng tìm mua các cổng "RS-232 to DB9" để dễ dàng làm theo các bài hướng dẫn trước. Tuy nhiên, không phải ai cũng may mắn như vậy, trong bài viết này, chúng ta sẽ tiếp cận với một cách khác mà tớ đã sử dụng để giải quyết bài toán không có cáp "RS-232 to DB9".

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