Vấn đề
Các lớp lưu trữ khác nhau trong Ngôn ngữ C là gì? Giải thích chúng bằng các chương trình?
Giải pháp
Lớp lưu trữ được định nghĩa là phạm vi và thời gian tồn tại của các biến hoặc một hàm có trong Chương trình C.
Các lớp lưu trữ
Sau đây là các lớp lưu trữ trong C -
- tự động
- extern
- tĩnh
- đăng ký
Biến tự động / Biến cục bộ
- Từ khoá - tự động
- Đây còn được gọi là các biến cục bộ
- Phạm vi -
-
Phạm vi của một biến cục bộ có sẵn trong khối mà chúng được khai báo.
-
Các biến này được khai báo bên trong một khối
-
- Giá trị mặc định - giá trị rác
Ví dụ
#include<stdio.h> void main (){ auto int i=1;{ auto int i=2;{ auto int i=3; printf ("%d",i); } printf("%d", i); } printf("%d", i); }
Đầu ra
3 2 1
Biến toàn cục / Biến ngoài
- Từ khoá - extern
-
Các biến này được khai báo bên ngoài khối và vì vậy chúng còn được gọi là biến toàn cục
-
Phạm vi - Phạm vi của một biến toàn cục có sẵn trong suốt chương trình.
- Giá trị mặc định - không
Ví dụ
#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
31
Biến tĩnh
- Từ khoá - tĩnh
- Phạm vi - Phạm vi của một biến tĩnh là nó giữ nguyên giá trị của nó trong suốt chương trình và giữa các lần gọi hàm.
- Các biến tĩnh chỉ được khởi tạo một lần.
- Giá trị mặc định - không
Ví dụ
#include<stdio.h> main (){ inc (); inc (); inc (); } inc (){ static int i =1; printf ("%d", i); i++; }
Đầu ra
1 2 3
Đăng ký biến
- Từ khoá - đăng ký
-
Giá trị biến thanh ghi được lưu trữ trong thanh ghi CPU thay vì trong bộ nhớ nơi các biến bình thường được lưu trữ.
-
Thanh ghi là đơn vị lưu trữ tạm thời trong CPU.
Ví dụ
#include<stdio.h> main (){ register int i; for (i=1; i< =5; i++) printf ("%d",i); }
Đầu ra
1 2 3 4 5