Biến toàn cục C++

Biến là tên được gán cho vùng lưu trữ mà chương trình có thể thao tác. Loại biến xác định kích thước và cách bố trí bộ nhớ của biến

Nó cũng xác định phạm vi giá trị cần được lưu trữ bên trong bộ nhớ đó và bản chất của các hoạt động có thể được áp dụng cho biến đó

Phạm vi biến

Phạm vi của biến chỉ đơn giản là thời gian tồn tại của một biến. Đó là khối mã theo đó một biến có thể áp dụng hoặc tồn tại. Ví dụ

function foo(){
var x;
}

Bạn khai báo biến “x” bên trong hàm “foo. ” Phạm vi của biến đó nằm trong hàm đó, nó không thể được sử dụng bên ngoài hàm đó.
Có ba vị trí mà bạn có thể khai báo biến cho ngôn ngữ lập trình biến.

  • Bên trong một chức năng hoặc một khối. Biến cục bộ
  • Ngoài tất cả các chức năng. biến toàn cầu
  • Trong định nghĩa của các tham số chức năng. thông số chính thức

Biến cục bộ

Biến cục bộ được định nghĩa là một loại biến được khai báo trong khối lập trình hoặc chương trình con. Nó chỉ có thể được sử dụng bên trong chương trình con hoặc khối mã mà nó được khai báo. Biến cục bộ tồn tại cho đến khi khối chức năng được thực thi. Sau đó, nó sẽ tự động bị hủy

Ví dụ về biến cục bộ

public int add(){
int a =4;
int b=5;
return a+b;
}

Ở đây, 'a' và 'b' là các biến cục bộ

Biến toàn cầu

Biến toàn cục trong chương trình là biến được định nghĩa bên ngoài chương trình con hoặc hàm. Nó có phạm vi toàn cầu có nghĩa là nó giữ giá trị của nó trong suốt vòng đời của chương trình. Do đó, nó có thể được truy cập trong toàn bộ chương trình bởi bất kỳ chức năng nào được xác định trong chương trình, trừ khi nó bị ẩn

Thí dụ

int a =4;
int b=5;
public int add(){
return a+b;
}

Ở đây, 'a' và 'b' là các biến toàn cục

Biến cục bộ so với biến toàn cầu

Dưới đây là một số khác biệt cơ bản giữa các biến Cục bộ và Toàn cầu

ParameterLocalGlobalScopeIt được khai báo bên trong một hàm. Nó được khai báo bên ngoài chức năng. Giá trị Nếu nó không được khởi tạo, một giá trị rác sẽ được lưu trữ Nếu nó không được khởi tạo, giá trị 0 được lưu trữ như mặc định. Trọn đờiNó được tạo khi chức năng bắt đầu thực thi và mất đi khi chức năng kết thúc. Nó được tạo trước khi chương trình bắt đầu thực thi toàn cầu và bị mất khi chương trình kết thúc. Chia sẻ dữ liệu Không thể chia sẻ dữ liệu vì dữ liệu của biến cục bộ chỉ có thể được truy cập bởi một hàm. Có thể chia sẻ dữ liệu vì nhiều chức năng có thể truy cập cùng một biến toàn cục. Các tham số Việc truyền tham số là bắt buộc đối với các biến cục bộ để truy cập giá trị trong hàm khác Việc truyền tham số là không cần thiết đối với biến toàn cục vì nó hiển thị trong toàn bộ chương trình Sửa đổi giá trị biến Khi giá trị của biến cục bộ được sửa đổi trong một hàm, các thay đổi sẽ không hiển thị trong . Khi giá trị của biến toàn cục được sửa đổi trong một chức năng, các thay đổi sẽ hiển thị trong phần còn lại của chương trình. Các biến byLocal được truy cập có thể được truy cập với sự trợ giúp của các câu lệnh, bên trong một hàm mà chúng được khai báo. Bạn có thể truy cập các biến toàn cục bằng bất kỳ câu lệnh nào trong chương trình. Lưu trữ bộ nhớ Nó được lưu trữ trên ngăn xếp trừ khi được chỉ định. Nó được lưu trữ trên một vị trí cố định do trình biên dịch quyết định

Ưu điểm của việc sử dụng biến Global

  • Bạn có thể truy cập biến toàn cục từ tất cả các chức năng hoặc mô-đun trong chương trình
  • Bạn chỉ cần khai báo biến toàn cục một lần bên ngoài các mô-đun
  • Nó được sử dụng lý tưởng để lưu trữ các “hằng số” vì nó giúp bạn duy trì tính nhất quán
  • Biến toàn cầu hữu ích khi nhiều chức năng đang truy cập cùng một dữ liệu

Ưu điểm của việc sử dụng Biến cục bộ

  • Việc sử dụng các biến cục bộ đảm bảo rằng các giá trị của các biến sẽ được giữ nguyên trong khi tác vụ đang chạy
  • Nếu một số tác vụ thay đổi một biến duy nhất đang chạy đồng thời thì kết quả có thể không đoán trước được. Nhưng việc khai báo nó là biến cục bộ sẽ giải quyết được vấn đề này vì mỗi tác vụ sẽ tạo phiên bản riêng của biến cục bộ
  • Bạn có thể đặt cùng tên cho các biến cục bộ trong các hàm khác nhau vì chúng chỉ được nhận dạng bởi hàm mà chúng được khai báo trong đó
  • Các biến cục bộ sẽ bị xóa ngay sau khi bất kỳ chức năng nào kết thúc và giải phóng không gian bộ nhớ mà nó chiếm giữ

Nhược điểm của việc sử dụng Biến toàn cục

  • Quá nhiều biến được khai báo là toàn cục, sau đó chúng vẫn còn trong bộ nhớ cho đến khi chương trình thực thi xong. Điều này có thể gây ra sự cố Hết bộ nhớ
  • Dữ liệu có thể được sửa đổi bởi bất kỳ chức năng. Bất kỳ câu lệnh nào được viết trong chương trình đều có thể thay đổi giá trị của biến toàn cục. Điều này có thể cho kết quả không thể đoán trước trong môi trường đa tác vụ
  • Nếu các biến toàn cục bị ngưng do tái cấu trúc mã, bạn sẽ cần thay đổi tất cả các mô-đun nơi chúng được gọi

Nhược điểm của việc sử dụng Biến cục bộ

  • Quá trình gỡ lỗi của một biến cục bộ khá phức tạp
  • Dữ liệu chung được yêu cầu truyền đi lặp lại vì không thể chia sẻ dữ liệu giữa các mô-đun
  • Họ có một phạm vi rất hạn chế

Điều gì hữu ích hơn?

Biến cục bộ và biến toàn cục quan trọng như nhau khi viết chương trình bằng bất kỳ ngôn ngữ nào. Tuy nhiên, một số lượng lớn biến toàn cục có thể chiếm một bộ nhớ lớn. Một thay đổi không mong muốn đối với các biến toàn cục trở nên khó xác định. Do đó, nên tránh khai báo các biến toàn cục không mong muốn

Biến toàn cục trong C là gì?

Các biến được khai báo bên ngoài hàm đã cho được gọi là biến toàn cục. Chúng không bị giới hạn ở một chức năng cụ thể - có nghĩa là người ta có thể sử dụng bất kỳ chức năng cụ thể nào để không chỉ truy cập mà còn sửa đổi các biến toàn cục.

Có các biến toàn cục trong C không?

Trình biên dịch C nhận dạng một biến là toàn cục , trái ngược với cục bộ, bởi vì khai báo của nó nằm ngoài phạm vi của bất kỳ chức năng nào tạo nên chương trình. Tất nhiên, một biến toàn cục chỉ có thể được sử dụng trong một câu lệnh thực thi sau khi nó đã được khai báo.

Bạn có thể thay đổi các biến toàn cục trong C không?

Các biến toàn cục có thể được truy cập và sửa đổi bởi bất kỳ hàm nào trong C . Biến toàn cục chỉ có thể được định nghĩa trước hàm main(). Chúng ta không thể xác định lại giá trị của một biến toàn cục trong phạm vi toàn cầu, tuy nhiên, chúng ta có thể truy cập một biến toàn cầu trong phạm vi toàn cầu.

Các biến toàn cầu có được khởi tạo bằng 0 trong C không?

Có, tất cả các thành viên của a được đảm bảo được khởi tạo thành 0 . Nếu một đối tượng có thời lượng lưu trữ tĩnh không được khởi tạo một cách rõ ràng, thì nó được khởi tạo hoàn toàn như thể mọi thành viên có kiểu số học được gán 0 và mọi thành viên có kiểu con trỏ được gán một hằng số con trỏ null.