1
Sự khác nhau giữa biến toàn cục và biến cục bộ trong C/C++ là gì?
0
xuanthanh0 đã đăng:

Cho mình hỏi biến toàn cục và biến cục bộ trong C/C++ là gì? Chúng khác nhau như thế nào?

thêm bình luận...
1
huythong20 đã đăng:

Trong C/C++, biến toàn cục là biến được khai báo ngoài phạm vi hàm và được dùng chung cho tất cả các hàm bao gồm hàm main, biến cục bộ là biến được sử dụng trong phạm vi hàm.

Sự khác nhau cơ bản giữa hai biến này đó là:

Biến cục bộ

  • Được khai báo trong phạm vi một hàm.
  • Giá trị của biến chỉ được sử dụng trong phạm vi hàm đó, không thể sử dụng bởi hàm khác.
  • Biến sẽ bị hủy sau khi hàm thực hiện xong công việc của mình.
  • Biến được khởi tạo có giá trị rác, bạn phải tự mình khởi tạo giá trị cho biến.

Ví dụ đoạn chương trình sau,

#include <iostream>
using namespace std;

int tinhTong(int n1, int n2){
    int tong = n1 + n2; // tong được xem là biến cục bộ
                        // nó chỉ được sử dụng trong phạm vi
                        // hàm tinhTong này thôi.
    return tong;
}


int main(){
    int b = 4;
    int c = 5;

    int d = tinhTong(b, c);
    cout << d << endl; // d = 9 
}

Biến toàn cục

  • Được khai báo ngoài hàm, có thể được khai báo trong hàm main() nhưng sử dụng chung cho tất cả các hàm có trong hàm main().
  • Giá trị của biến được sử dụng chung cho tất cả các hàm, nếu bạn truyền biến vào hàm bằng cách truyền tham chiếu thì giá trị của biến sẽ thay đổi.
  • Biến không bị hủy sau khi hàm kết thúc, biến chỉ bị hủy khi chương trình đã dừng.
  • Biến được khởi tạo có giá trị mặc định do hệ thống tự động tạo ra.

Ví dụ đoạn chương trình sau,

#include <iostream>
using namespace std;

int a; // a là biến toàn cục được
       // hệ thống khởi tạo giá trị mặc định bằng 0

int main(){
    int b = 4;

    int c = a + b; // Không gặp lỗi vì a (biến toàn cục) đã được
                   // hệ thống khởi tạo giá trị rồi
    cout << c << endl; //c = 4
}

Biến toàn cục khi ra khỏi hàm thì giá trị sẽ ntn?

Cộng đồng 18.05.2021

Trừ khi bạn cập nhật biến toàn cục trong hàm đó còn không thì khi ra khỏi hàm, giá trị của biến toàn cục vẫn giữ nguyên, khi thoát khỏi hàm main (tức là chương trình kết thúc), tất cả các biến kể cả biến toàn cục sẽ được huỷ khỏi bộ nhớ.

Cộng đồng 20.05.2021
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)