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