Biến extern (biến ngoài) còn gọi là biến toàn cục. Khai báo ngoài hàm, hiển thị toàn chương trình. Giá trị có thể thay đổi bởi các hàm. Từ khóa extern dùng để khai báo/định nghĩa biến ngoài.
Đặc điểm
- Phạm vi: Toàn cục (không bị giới hạn bởi hàm).
- Giá trị mặc định: 0.
- Vòng đời: Cả chương trình.
Điểm quan trọng
- Có thể khai báo nhiều lần (trong các file .c khác nhau), nhưng chỉ định nghĩa một lần (cấp phát bộ nhớ).
externmở rộng khả năng thấy (visibility) của biến/hàm.- Hàm mặc định đã toàn cục, không cần
externcho hàm (chỉ thêm rối). - Biến
externchỉ khai báo, không định nghĩa (trừ khi có khởi tạo). - Khởi tạo biến
externcoi là định nghĩa.
Ví dụ
#include <stdio.h>
extern int x = 32; // Định nghĩa (có khởi tạo)
int b = 8; // Toàn cục ngầm định
int main() {
auto int a = 28;
extern int b; // Khai báo tham chiếu b toàn cục
printf("Auto a: %d\n", a);
printf("Extern x, b: %d, %d\n", x, b);
x = 15; // Sửa đổi biến extern
printf("Extern x sau khi sua: %d\n", x);
return 0;
}
Kết quả
Auto a: 28 Extern x, b: 32, 8 Extern x sau khi sua: 15
Ứng dụng thực tế: Chia sẻ biến giữa nhiều file .c (khai báo extern trong header, định nghĩa trong một file .c).