Biến cục bộ được khai báo và sử dụng ở đâu

Ở bài trước, chúng ta đã cùng tìm hiểu về kiểu dữ liệu, cách khai báo và sử dụng hằng, biến. Trong bài viết này, ta sẽ tìm hiểu kĩ hơn về biến. Trong ngôn ngữ C/C++, biến có 2 loại: biến toàn cục biến cục bộ. Vậy chúng khác nhau ở điểm nào, phạm vi hoạt động của chúng ra sao ? Cùng xem nhé !

1. Biến cục bộ [local variables]

Biến cục bộ là biến:

– Được khai báo bên trong một khối lệnh nào đó.

– Chỉ được truy cập trong khối lệnh mà nó được khai báo và những “khối lệnh con” của khối lệnh đó.

– Bị huỷ khi khối lệnh kết thúc.

– Khi khai báo mà không khởi gán, biến cục bộ mang giá trị rác [Giá trị rác là giá trị bất kì nào đó không biết trước được].

2. Biến toàn cục [global variables]

Biến toàn cục là biến:

– Được khai báo bên ngoài tất cả các hàm, khai báo chung với các dòng khai báo thư viện.

– Có thể truy cập ở bất cứ đâu trong chương trình.

– Chỉ bị huỷ khi chương trình kết thúc.

– Khi khai báo mà không khởi gán, biến toàn cục mang giá trị 0.

Xét đoạn chương trình sau:

int n; //biến toàn cục int main[] { int x, y; //biến cục bộ trong hàm main x = 5; y = 6; { int x = 4; printf["x [in sub block] = %d\n", x]; y += 1; } printf["n = %d\n", n]; printf["x [int main block] = %d\n", x]; printf["y = %d\n", y]; }

Kết quả xuất ra màn hình:

n = 0 x [in sub block] = 4 x [in main block] = 5 y = 7

Giải thích thêm:

– Biến n là một ví dụ cho biến toàn cục, khi chỉ khai báo mà không khởi gán, giá trị của biến toàn cục là 0, và nó có thể được sử dụng bất cứ đâu trong chương trình.

– Biến x, y là 2 ví dụ về biến cục bộ, trong đó:

+ Biến y có thể được gọi trong khối lệnh mà nó được khai báo và trong các khối lệnh con.

+ Nhưng với x, ta thấy bên trong khối lệnh con, ta lại khai báo một biến x khác. Mình xin nhấn mạnh là một biến x khác. Trong trường hợp khai báo này, mọi thao tác đối với x chỉ ảnh hướng đến x bên trong khối lệnh con, hoàn toàn không ảnh hưởng đến x ở hàm main ví chúng là hai biến độc lập nhau.

Một số lưu ý [theo kinh nghiệm bản thân thôi nha]:

– Không nên dùng biến toàn cục nếu không thật sự cần thiết, vì nó có thể được gọi ở bất cứ đâu. Giả sử bạn viết một chương trình lớn, khoảng 1000 dòng code chẳng hạn, mà dùng đến biến toàn cục, thì thật sự rất khó để kiểm soát được biến toàn cục trong 1000 dòng code đó, không biết nó đã được gọi ở chỗ nào.

– Hạn chế vấn đề “biến trùng tên” như trên để tránh sự “nhập nhằng”, khó hiểu cho chương trình.

Trên đây là một số vấn đề về biến toàn cục và biến cục bộ, Cảm ơn các bạn đã theo dõi !

This entry is part 30 of 69 in the series Học C Không Khó

89 / 100

Biến cục bộ [global variable], biến toàn cục [local variable] hay biến tĩnh [biến static – static variable] là các loại biến có phạm vi sử dụng khác nhau trong ngôn ngữ lập trình C/C++. Bài viết này Lập Trình Không Khó sẽ cùng các bạn tìm hiểu về các khái niệm này. Tất nhiên chúng ta sẽ luôn có các ví dụ đi kèm giúp các bạn dễ hiểu nhất.

Biến Cục Bộ Và Biến Toàn Cục

Video hướng dẫn phạm vi của biến

Trong ngôn ngữ lập trình C, mọi biến khi khai báo đều có 2 thuộc tính: kiểu dữ liệu [type] và lớp lưu trữ [storage class] của nó. Lớp lữu trữ ở đây chính là thuộc tính thể hiện phạm vi của biến: nơi nào có thể dùng biến đó và biến đó tồn tại trong bao lâu. Có 4 loại lớp lữu trữ:

  • automatic – tự động [cục bộ]
  • external – toàn cục
  • static – tĩnh
  • register

Video dưới đây sẽ trình bày cho bạn thấy rõ thế nào là biến toàn cục, biến cục bộ hay biến tĩnh. Bạn đọc nên xem video trước và thực hành theo hướng dẫn, sau đó tiếp tục đọc bài viết này nhé.

Dưới đây là source code trong video các bạn tham khảo nhé.

Code LocalVsGloal.cpp

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

/*

    1. Biến toàn cục

    2. Biến cục bộ

    3. Biến static [biến tĩnh]

*/

// Biến toàn cục và biến cục bộ

#include

int g_Number = 5; // biến toàn cục

void Sum[int a, int b]{

    int sum = a + b; // biến cục bộ

    printf["\nSum = %d", sum];

}

int main[]{

    int f = 5; // biến cục bộ

    int s = 10; // biến cục bộ

    Sum[f, s];

}

Code StaticVariable.cpp

#include

void display[]

{

    static int c = 0;

    printf["%d  ",c];

    c += 5;

}

int main[]

{

    display[];

    display[];

}

Biến cục bộ là gì?

Các biến được khai báo trong 1 khối code thuộc lớp lưu trữ tự động [automatic or local variable] – hay chính là các biến cục bộ. Các biến cục bộ này chỉ tồn tại và chỉ có thể sử dụng bên trong khối code đó trong khi khối code đó đang thực thi.

Ở đây khối code được hiểu là thân của 1 hàm: hàm main[] hoặc hàm con, thân của vòng lặp, cấu trúc if else, … Hãy xem ví dụ dưới đây:

#include

int main[] {

  for [int i = 0; i in ra 6.

  • Ở lần gọi hàm thứ 2, do biến tĩnh này đã được khai báo trước đó nên nó không được khai báo lại nữa. Nên là nó vẫn giữ giá trị là 6 và tăng thêm 5 đơn vị để in được ra 11.
  • Tài liệu tham khảo

    Video liên quan

    Chủ Đề