Tĩnh trong lập trình C

Static C Programming



Trong hướng dẫn này, chúng tôi sẽ giải thích từ khóa static bằng cách áp dụng nó trong các biến và hàm. Static là một từ khóa được sử dụng trong lập trình C và nó có thể được áp dụng bằng cách sử dụng cú pháp sau:

static {data type} {tên biến}







Biến cục bộ tĩnh

Khi một biến trong một hàm là tĩnh, thì biến đó sẽ bảo toàn giá trị của nó giữa các lần gọi hàm.



//Example1.c

#bao gồm

NSfun1()
{

NSđếm=0;
đếm++;
trở lạiđếm;
}

NSfun2()
{
tĩnh NSđếm=0;
đếm++;
trở lạiđếm;
}

NSchủ chốt()
{
printf ('fun1 cuộc gọi đầu tiên trả về:% d ',fun1());
printf ('fun1 cuộc gọi thứ 2 trả về:% d ',fun1());

printf ('fun2 cuộc gọi đầu tiên trả về:% d ',fun2());
printf ('fun2 cuộc gọi thứ 2 trả về:% d ',fun2());

trở lại 0;
}


Trong ví dụ 1.c, chúng ta có hai hàm: fun1 ()fun2 () . Trong fun1 () , chúng tôi khai báo một biến (đếm) và khởi tạo nó bằng 0. Sau đó, chúng tôi tăng biến đếm và trả về giá trị kết quả. Sử dụng chủ chốt() , chúng tôi gọi fun1 () hai lần và mỗi lần, giá trị 1 được trả về vì biến đếm bị xóa khi lệnh gọi tới fun1 () đã hoàn thành. Trong fun2 () chúng ta đã khai báo biến count là một biến tĩnh. Do đó, giá trị của nó được bảo toàn. Sử dụng chủ chốt() , chúng tôi gọi fun2 () hai lần: lần đầu tiên trả về giá trị 1 và lần thứ hai trả về giá trị 2.



Biến toàn cục tĩnh

Một biến toàn cục tĩnh hoạt động giống như các biến toàn cục khác, nhưng nó không thể được truy cập từ chương trình C khác.





Chức năng tĩnh

Trong C, các hàm là toàn cục theo mặc định. Tuy nhiên, nếu chúng ta khai báo một hàm tĩnh, thì hàm là cục bộ và không thể truy cập từ chương trình C khác.

Khởi tạo các biến tĩnh

Nếu một biến tĩnh không được khởi tạo rõ ràng, thì nó sẽ được khởi tạo bằng 0.



//Example2.c

#bao gồm

NSchủ chốt()
{
tĩnh NStôi;

printf ('Giá trị của i:% d ',tôi);

trở lại 0;
}


Trong Ví dụ2.c, chúng tôi đã khai báo một biến tĩnh i không được khởi tạo. Tuy nhiên, vì biến là tĩnh nên nó sẽ tự động được khởi tạo thành 0.

Điều quan trọng cần lưu ý là một biến static phải được khởi tạo bằng một hằng số; chúng ta không thể sử dụng giá trị trả về của một hàm để khởi tạo một biến tĩnh.

//Example3.c

#bao gồm

NSfun1()
{
trở lại 5;
}

NSchủ chốt()
{
tĩnh NStôi=fun1();
printf ('Giá trị của i:% d ',tôi);
trở lại 0;
}


Trong Ví dụ3.c, chúng tôi cố gắng khởi tạo một biến tĩnh bằng cách sử dụng giá trị trả về của fun1 () . Tuy nhiên, như bạn có thể thấy, một lỗi được trả về khi mã được biên dịch.

Tóm lược

Thời gian tồn tại của một biến tĩnh và thời gian tồn tại của chương trình là bằng nhau.

Nếu một biến tĩnh không được khởi tạo, thì nó sẽ nhận giá trị mặc định là 0.

Cả một biến tĩnh toàn cục và một hàm tĩnh đều không thể truy cập được từ một chương trình khác với chương trình mà nó đã được định nghĩa.