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

Giá trị mặc định của biến static trong C

Khi dùng từ khóa static, biến/thành viên/hàm không thể thay đổi vùng nhớ. Cấp phát suốt vòng đời chương trình. Hàm static gọi trực tiếp qua tên class (C++).

Biến static chỉ khởi tạo một lần. Compiler giữ biến đến hết chương trình. Có thể định nghĩa trong hoặc ngoài hàm. Cục bộ trong block. Giá trị mặc định là 0. Sống suốt quá trình thực thi.

Cú pháp

static datatype variable_name;

Trong đó: datatype – kiểu dữ liệu; variable_name – tên biến; value – giá trị khởi tạo (mặc định 0).

Ví dụ

#include <stdio.h>

int main() {
    static int a;  // Mặc định = 0
    int b;         // Không khởi tạo -> giá trị rác
    printf("Gia tri mac dinh static a: %d\n", a);
    printf("Gia tri mac dinh non-static b: %d\n", b);
    return 0;
}

Kết quả

Gia tri mac dinh static a: 0
Gia tri mac dinh non-static b: 0

Lưu ý: Kết quả cho b có thể khác 0 (giá trị rác) tùy compiler/runtime. Ví dụ trên in ra 0 chỉ do bộ nhớ stack xảy ra chứa 0. Không thể tin cậy vào giá trị này. Luôn khởi tạo biến local thường!

Tóm tắt

  • Static (global/local): Tự động zero-initialized.
  • Global (non-static): Cũng zero-initialized.
  • Local (automatic): Không khởi tạo mặc định – giá trị indeterminate.