Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Giải thích vòng đời (lifetime) biến trong C


Lớp lưu trữ chỉ định phạm vi, vòng đời, liên kết biến.

Định nghĩa đầy đủ biến cần kiểu và lớp lưu trữ.

Tên biến xác định vị trí bộ nhớ vật lý lưu giá trị.

Lớp lưu trữ cho biết:

  • Lưu ở đâu (bộ nhớ/CPU register)?
  • Giá trị mặc định?
  • Phạm vi truy cập?
  • Vòng đời?

Vòng đời (Lifetime)

Vòng đời biến xác định thời gian bộ nhớ được cấp phát (từ cấp phát đến giải phóng).

Trong C, biến có vòng đời tự động (automatic), tĩnh (static) hoặc động (dynamic).

  • Tự động - Tạo khi gặp khai báo, hủy khi thoát khối.
  • Tĩnh - Tạo khi khai báo lần đầu, hủy khi chương trình kết thúc.
  • Động - Cấp phát/giải phóng qua hàm quản lý bộ nhớ.

Các lớp lưu trữ

4 lớp lưu trữ trong C:

Lớp Khu vực lưu Giá trị mặc định Vòng đời Phạm vi Từ khóa
Tự độngBộ nhớRácTrong khốiCục bộauto
Thanh ghiCPU registerRácTrong khốiCục bộregister
TĩnhBộ nhớ0Giữa các lần gọi hàmCục bộstatic
Ngoại部Bộ nhớRácCả chương trìnhToàn cụcextern

Ví dụ

Chương trình C lớp 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

3 2 1

Ví dụ

Chương trình C lớp ngoại部:

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

Đầu ra

3 1