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

Quy tắc phạm vi cục bộ và toàn cục (Local & Global Scope) trong C


Phạm vi toàn cục (Global Scope)

Biến khai báo ngoài khối, nhìn thấy đến hết chương trình.

#include <stdio.h>
int c = 30; // global
int main() {
    int a = 10;
    printf("a=%d, c=%d\n", a, c);
    fun();
    return 0;
}
void fun() {
    printf("c=%d\n", c);
}

Kết quả

a=10, c=30
c=30

Phạm vi cục bộ (Local Scope)

Biến trong khối/hàm chỉ truy cập trong khối đó, không tồn tại bên ngoài.

#include <stdio.h>
int main() {
    int i = 1; // local main
    printf("%d ", i);
    {
        int j = 2; // local block
        printf("%d ", j);
    }
    // j không truy cập được ở đây
    return 0;
}

Kết quả

1 2

Trùng tên biến trong khối lồng nhau

Khai báo lại cùng tên trong khối con → che khuất biến ngoài.

int main() {
    { int i = 1; printf("%d ", i); }
    { int i = 2; printf("%d ", i); }
}

Kết quả

1 2

Che khuất (Shadowing)

int main() {
    int i = 1;
    { int i = 2; printf("%d", i); } // in 2
}

Kết quả

2

Biến ngoài truy cập được trong khối con (nếu không khai báo lại)

int main() {
    int i = 1;
    { int j = 2; printf("%d %d", j, i); } // in 2 1
}

Kết quả

2 1