30/09/2018, 20:09
Biến toàn cục và static
Cho mình hỏi là khi dùng static int d =15 thì nó lại hiện ra màng hình là 2
trong khi đó nếu mình không dùng static int mà chỉ viêt d =15 thôi thì màng hình lại hiện ra là 36
Vậy d khi khai báo static là biến d ảo còn ko có static thì nó chạy xuyên suốt luôn à?
Bài liên quan
static int d =15;
thì compiler tự động tạo một vùng chứa độc lập cho d và gán trị 15 vào.
Khi chương trình chạy và hàm được gọi, hàm bỏ qua câu lệnh gán trên và tự động biết dùng địa chỉ vùng chứa để tìm d, không phải gán trị lại (d đã có trị rồi). Vì vậy, nếu trị được thay đổi trong hàm thì d luôn luôn giữ trị mới.
Khi compiler gặp:
int d=15;
thì compiler biết đây là biến auto. Vùng chứa cho d lúc này phụ thuộc vào hàm. Và d=15 là một lệnh gán mà hàm phải thi hành. Vì vậy, mỗi lần gọi hàm thì d lại được gán trị khởi đầu là 15.
Trong c++, Thì biến static còn được dùng trong class :