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

Khởi tạo biến toàn cục và static trong C

Trong ngôn ngữ C, cả biến toàn cục (global) và biến static đều bắt buộc phải được khởi tạo bằng các giá trị hằng số. Điều này là do giá trị của các biến này phải được biết trước khi chương trình bắt đầu thực thi. Nếu không cung cấp giá trị hằng để khởi tạo, trình biên dịch sẽ báo lỗi.

Chương trình sau minh họa việc khởi tạo biến toàn cục và static:

Ví dụ

#include <stdio.h>

int a = 5;           // Biến toàn cục
static int b = 10;   // Biến static toàn cục

int main() {
    printf("Gia tri bien toan cuc a: %d", a);
    printf("\nGia tri bien static toan cuc b: %d", b);
    return 0;
}

Kết quả

Gia tri bien toan cuc a: 5
Gia tri bien static toan cuc b: 10

Trong chương trình trên, biến toàn cục a có giá trị 5 và biến static b có giá trị 10, nên chương trình chạy đúng như mong đợi.

Nếu không dùng hằng số để khởi tạo biến toàn cục và static, sẽ dẫn đến lỗi biên dịch. Ví dụ dưới đây gây ra lỗi initializer element is not constant:

#include <stdio.h>

int func() {
    return 25;
}

int main() {
    static int a = func(); // Lỗi: func() không phải hằng số
    printf("%d", a);
    return 0;
}

Vì vậy, biến toàn cục và static chỉ nên được khởi tạo bằng các hằng số (literals hoặc biểu thức hằng).