Computer >> Máy Tính >  >> Lập trình >> lập trình C

Giải thích Thời gian tồn tại của một biến trong ngôn ngữ C.

Các lớp lưu trữ chỉ định phạm vi, thời gian tồn tại và ràng buộc của các biến.

Để xác định đầy đủ một biến, người ta không chỉ cần đề cập đến ‘kiểu’ của nó mà còn cả lớp lưu trữ của nó.

Tên biến xác định một số vị trí vật lý trong bộ nhớ máy tính, nơi tập hợp các bit được cấp phát để lưu trữ các giá trị của biến.

Lớp lưu trữ cho chúng tôi biết các yếu tố sau -

  • Biến được lưu trữ ở đâu (trong bộ nhớ hoặc thanh ghi cpu)?
  • Giá trị ban đầu của biến sẽ là bao nhiêu nếu không có gì được khởi tạo?
  • Phạm vi của biến là gì (nơi nó có thể được truy cập)?
  • Tuổi thọ của một biến là gì?

Thời gian tồn tại

Thời gian tồn tại của một biến xác định khoảng thời gian mà máy tính cấp phát bộ nhớ cho nó (khoảng thời gian giữa phân bổ và phân bổ bộ nhớ).

Trong ngôn ngữ C, một biến có thể có thời gian tồn tại tự động, tĩnh hoặc động.

  • Tự động - Một biến có thời gian tồn tại tự động được tạo. Mỗi lần, tuyên bố của họ đều bị bắt gặp và bị phá hủy. Ngoài ra, các khối của họ cũng được thoát.
  • Tĩnh - Một biến được tạo khi khai báo lần đầu tiên. Nó bị hủy khi quá trình thực thi dừng / kết thúc.
  • Động - Bộ nhớ biến được cấp phát và phân bổ thông qua các chức năng quản lý bộ nhớ.

Các lớp lưu trữ

Có bốn lớp lưu trữ trong ngôn ngữ C -

Lớp lưu trữ Khu vực lưu trữ Giá trị ban đầu mặc định Thời gian tồn tại Phạm vi Từ khóa
Tự động Bộ nhớ Kiểm soát đến khi vẫn còn trong khối Kiểm soát đến khi vẫn còn trong khối Địa phương Tự động
Đăng ký Thanh ghi CPU Giá trị rác Kiểm soát đến khi vẫn còn trong khối Địa phương Đăng ký
Tĩnh Bộ nhớ Số không Giá trị giữa các lệnh gọi hàm Địa phương Tĩnh
Bên ngoài Bộ nhớ Giá trị rác Trong suốt quá trình thực thi chương trình Toàn cầu Extern

Ví dụ

Sau đây là chương trình C cho lớp lưu trữ tự động -

#include<stdio.h>
main ( ){
   auto int i=1;{
      auto int i=2;{
         auto int i=3;
         printf ("%d",i)
      }
      printf("%d", i);
   }
   printf("%d", i);
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

3 2 1

Ví dụ

Sau đây là chương trình C cho lớp lưu trữ bên ngoài -

#include<stdio.h>
extern int i =1; /* this ‘i’ is available throughout program */
main ( ){
   int i = 3; /* this ‘i' available only in main */
   printf ("%d", i);
   fun ( );
}
fun ( ) {
   printf ("%d", i);
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

3 1