Computer >> Máy Tính >  >> Lập trình >> C ++

Sự khác biệt giữa biến tĩnh, tự động, toàn cục và cục bộ trong C ++

Có hai khái niệm riêng biệt ở đây -

  • phạm vi, xác định nơi tên có thể được truy cập - toàn cầu và cục bộ
  • thời lượng lưu trữ, xác định thời điểm một biến được tạo và hủy - tĩnh và tự động

Phạm vi

Các biến cục bộ chỉ có thể được sử dụng bởi các câu lệnh bên trong hàm hoặc khối mã đó. Các biến cục bộ không được biết đến với các hàm riêng của chúng.

Ví dụ

#include <iostream>
using namespace std;

int main () {
   // Local variable declaration:
   int a, b;
   int c;

   // actual initialization
   a = 10;
   b = 20;
   c = a + b;

   cout << c;
   return 0;
}

Điều này sẽ cung cấp đầu ra -

Đầu ra

30

Các biến toàn cục được định nghĩa bên ngoài tất cả các hàm, thường nằm trên đầu chương trình. Các biến toàn cục sẽ giữ giá trị của chúng trong suốt thời gian tồn tại của chương trình của bạn. Một biến toàn cục có thể được truy cập bởi bất kỳ hàm nào.

Ví dụ

#include <iostream>
using namespace std;

// Global variable declaration:
int g;

int main () {
   // Local variable declaration:
   int a, b;

   // actual initialization
   a = 10;
   b = 20;
   g = a + b;

   cout << g;
   return 0;
}

Điều này sẽ cung cấp đầu ra -

Đầu ra

30

Thời lượng lưu trữ

Biến tự động là các biến cục bộ có thời gian tồn tại kết thúc khi việc thực thi rời khỏi phạm vi của chúng và được tạo lại khi phạm vi được nhập lại.

Ví dụ

for (int i =0 0; i < 5; ++i) {
   int n = 0;
   printf("%d ", ++n); // prints 1 1 1 1 1 - the previous value is lost
}

Biến static có thời gian tồn tại kéo dài cho đến khi kết thúc chương trình. Nếu chúng là các biến cục bộ, thì giá trị của chúng vẫn tồn tại khi việc thực thi rời khỏi phạm vi của chúng.

for (int i = 0; i < 5; ++i) {
   static int n = 0;
   printf("%d ", ++n); // prints 1 2 3 4 5 - the value persists
}

Lưu ý rằng từ khóa static có nhiều nghĩa khác nhau ngoài thời lượng lưu trữ tĩnh. Ngoài ra, trong C ++, từ khóa auto không còn có nghĩa là thời lượng lưu trữ tự động; bây giờ nó có nghĩa là kiểu tự động, được suy ra từ trình khởi tạo của biến.