Bài 5: Cách khai báo biến cục bộ và biến toàn cục trong C

0
69
Rate this post

Trong bài này, mình sẽ hướng dẫn các bạn cách khai báo biến cục bộ và biến toàn cục trong ngôn ngữ lập trình C, cùng với phạm vi hoạt động của từng loại biến. Đồng thời, chúng ta sẽ thực hiện một số bài tập để rèn kỹ năng khai báo biến. Đây là những kiến thức cơ bản nhất khi bắt đầu học lập trình, nên hãy chú ý và ghi nhớ chúng nhé!

Biến trong lập trình là gì?

Biến là một vùng nhớ được sử dụng để lưu trữ các giá trị trong quá trình chạy của chương trình. Giá trị của biến có thể thay đổi bất kỳ lúc nào trong suốt quá trình chương trình thực hiện. Khi khai báo biến, chúng ta cần chỉ định kiểu dữ liệu và tên biến theo cú pháp sau:

<kiểu dữ liệu> <tên biến>;

Ví dụ:

int a;
float b;

Chúng ta cũng có thể gán giá trị ban đầu cho biến khi khai báo. Ví dụ:

int a = 100; // khai báo biến a có giá trị là số nguyên 100
float b = 0.1; // khai báo biến b có giá trị là số thực 0.1
char c = 'A'; // khai báo biến c có giá trị là kí tự 'A'
char s[] = "Xin chào bạn"; // khai báo biến s có giá trị là chuỗi kí tự "Xin chào bạn"

Trong ngôn ngữ lập trình C, có 3 loại biến cơ bản chính, đó là:

  • Biến cục bộ (Local variables)
  • Biến toàn cục (Global variables)
  • Các loại biến đặc biệt như static, volatile, register, …

Khai báo biến cục bộ và tính chất

Biến cục bộ là các biến được khai báo trong một hàm nào đó. Những biến này chỉ có thể tồn tại và sử dụng bên trong phạm vi của hàm đó. Biến cục bộ sẽ được cấp phát bộ nhớ khi hàm được gọi và giải phóng bộ nhớ khi hàm kết thúc thực thi.

Các biến cục bộ có thể có cùng tên nhưng được khai báo trong các hàm khác nhau và vẫn hoạt động độc lập với nhau. Ví dụ, chúng ta có thể có 2 biến có cùng tên là “a” trong 2 hàm khác nhau mà không gây xung đột. Tương tự như việc có 2 người cùng tên Hương ở hai nhà khác nhau, họ là hai người hoàn toàn khác biệt. Tuy nhiên, nếu có 2 biến cùng tên Hương trong cùng một nhà, sẽ gây ra lỗi.

#include <stdio.h>

void nha_a(void) {
    int a; // biến cục bộ, sẽ giải phóng khi hàm kết thúc
    a = 100;
    printf("Giá trị của a trong nha_a = %dn", a);
}

void nha_b(void) {
    int a; // biến cục bộ, sẽ giải phóng khi hàm kết thúc
    a = 200;
    printf("Giá trị của a trong nha_b = %dn", a);
}

int main() {
    nha_a();
    nha_b();
    return 0;
}

Kết quả:

Giá trị của a trong nha_a = 100
Giá trị của a trong nha_b = 200

Khai báo biến toàn cục và tính chất

Biến toàn cục là biến được khai báo bên ngoài các hàm và có thể truy xuất và sử dụng trong mọi hàm trong chương trình. Biến toàn cục được cấp phát bộ nhớ khi chương trình hoạt động và giải phóng bộ nhớ khi chương trình kết thúc.

Các biến toàn cục chỉ có thể sử dụng trong cùng một file.c, nếu muốn sử dụng trong các file.c khác, chúng ta phải sử dụng từ khóa “extern” khi khai báo biến toàn cục.

Trong một chương trình C, chúng ta có thể khai báo biến toàn cục và biến cục bộ có cùng tên. Tuy nhiên, khi trong một hàm, hàm sẽ ưu tiên sử dụng biến cục bộ được khai báo. Ví dụ:

#include <stdio.h>

int a = 5;

int cong(int x, int y) {
    int a = x + y; // biến cục bộ, ưu tiên sử dụng trong hàm
    return a;
}

int main() {
    int kq = cong(1, 2);
    printf("Kết quả = %dn", kq);
    return 0;
}

Kết quả:

Kết quả = 3

Kết

Biến toàn cục và biến cục bộ là hai khái niệm cơ bản nhất khi khai báo biến trong ngôn ngữ lập trình C. Ngoài ra, còn có một số loại biến đặc biệt mà chúng ta sẽ học sau này. Để sử dụng biến hiệu quả, hãy nhớ rõ các tính chất của từng loại biến và khai báo chúng theo phạm vi phù hợp. Lời khuyên cuối cùng là không nên đặt tên cho biến chỉ có một kí tự như “a”, “b”, “c”, “d”, … Hãy đặt tên biến theo ý nghĩa của nó. Thêm nữa, hãy đọc bài viết “Clean code” để hiểu tại sao chúng ta nên làm như vậy.

Ok, chúng ta sẽ tiếp tục với bài viết tiếp theo trong loạt bài “Học lập trình C từ A tới Z”. Đừng quên tham gia Hội Anh Em Nghiện Lập trình để giao lưu và học hỏi nhé.

Edited by: dnulib.edu.vn