LATEST

Phạm vi của biến trong C / C++ (biến cục bộ, biến toàn cục)

Trong bài viết này, codehow sẽ đưa ra cho các bạn về phạm vi của biến trong C / C++ (biến cục bộ, biến toàn cục). Mỗi biến được khai báo, sẽ có một phạm vi hoạt động riêng, vì vậy chúng ta cần tìm hiểu nó để sử dụng một cách tối ưu.

Mình sẽ đưa ra các khái niệm về biến cục bộ và biến toàn cục trong C / C++. Sau đó sẽ viết một vài ví dụ đơn giản có sử dụng biến cục bộ và biến toàn cục.

Biến cục bộ trong C / C++ là gì?

Biến cục bộ là biến được khai báo và sử dụng trong một khối code thuộc lơp lưu trữ tự động (automatic or local variable). Các biến cục bộ này chỉ tồn tại và được sử dụng trong khi khối code đó đang thực thi mà thôi.

Một khối code có thể là hàm main(), một hàm con, một khối lệnh if else, vòng lặp for, ... .

Ví dụ:

#include <stdio.h>
int main() {
  
  for (int i = 0; i < 5; ++i) {
     printf("\nCodehow.net!");
  }
  
  printf("%d", i);  
  return 0;
}

Trong đoạn chương trình trên, khi chạy sẽ gặp lỗi ngay lập tức. Bởi vì, chúng ta khai báo biến i = 0 trong vòng lặp for và ngoài vòng lặp chúng ta lại gọi biến i, khi đó nó sẽ hiểu biến i chưa được khai báo. Biến i chỉ có giá trị khi đang trong vòng lặp for mà thôi.

Ví dụ: Mình sẽ tạo một hàm còn và khai báo biến trong đó.

int main() {
    int num1; // num1 là biến cục bộ của hàm main()
}
void function() {
   int num2;  // num2 là biến cục bộ của hàm function()
}

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

Biến toàn cục là biến được khai báo ngoài tất cả các hàm, các khối code (external or global variable).

Các biến toàn cục được sử dụng và có thể truy xuất ở mọi hàm trong chương trình. Nó tồn tại cho tới khi chương trình kết thúc.

Ví dụ:

//khai báo thư viện stdio.h
#include <stdio.h>
int n = 10;  // biến toàn cục
int main(void) {
  //khai báo hàm display
  void display();
  //tăng biến n lên một
  ++n;
  //gọi hàm display()
  display();
  
  printf("\n-------------------------\n");
  printf("\nChuong trinh nay duoc dang tai Codehow.net\n");
  return 0;
}
//khởi tạo hàm con display
void display()
{
  //tăng biến n lên một  
  ++n;
  //hiển thị biến n ra màn hình
  printf("n = %d", n);
}

Kết quả:

bai6 01 png

Ví dụ: Biến n được sử dụng trong toàn chương trình và biến a chỉ được sử dụng trong hàm main().

//khai báo thư viện stdio.h
#include <stdio.h>
int n = 10;  // biến toàn cục, được sử dụng trong toàn chương trình
int main(void) {
  int a = 5; // biến cục bộ, chỉ được sử dụng trong hàm mainI()
  
  printf("\n-------------------------\n");
  printf("\nChuong trinh nay duoc dang tai Codehow.net\n");
  return 0;
}

Sự khác nhau giữa biến cục bộ và biến toàn cục trong C / C++

Tùy vào mục đích sử dụng các biến mà ta tùy chọn khai báo nó là biến cục bộ hay biến toàn cục.

Nếu biến đó muốn sử dụng trong suốt chương trình thì khai báo nó là biến toàn cục. Ngược lại chỉ muốn sử dụng trong một khối lệnh nhất định thì ta khai báo nó là biến cục bộ trong khối lệnh đó mà thôi.

bai6 02 png

Sự khác biệt rõ ràng nhất giữa biến cục bộ và biến toàn cục là phạm vi sử dụng của nó. Biến cục bộ có phạm vi nhỏ hơn, trong một khối lệnh còn biến toàn cục được sử dụng trong toàn chương trình.

Ví dụ đơn giản sử dụng biến cục bộ và biến toàn cục trong C / C++

Trong phần này mình sẽ đưa ra hai ví dụ đơn giản sử dụng biến toàn cục và biến cục bộ bằng hai ngôn ngữ là C và C++.

Ví dụ 1: Tính chu vi hình chữ nhật bằng ngôn ngữ C.

//khai báo thư viện stdio.h
#include <stdio.h>
int a, b;  // biến toàn cục
int main(void) {
  //khai báo biến c là biến cục bộ lưu trữ chu vi
  double c;
  //yêu cầu người dùng nhập vào hai cạnh a và b
  printf("Nhap vao canh a: ");
  scanf("%d", &a);
  printf("Nhap vao canh b: ");
  scanf("%d", &b);
  //tính chu vi hình chữ nhật
  c = (a + b) * 2;
  //hiển thị chu vi hình chữ nhật ra màn hình
  printf("Chu vi hinh chu nhat la: %0.1f", c);
  printf("\n-------------------------\n");
  printf("\nChuong trinh nay duoc dang tai Codehow.net\n");
  return 0;
}

Kết quả:

bai6 03 png

Ví dụ 2: Tính chu vi hình tròn bằng ngôn ngữ C++.

//khai báo thư viện iostream
#include <iostream>
//sử dụng namespace std
using namespace std;
//khai báo hằng số PI là biến toàn cục
  const double PI = 3.14;
int main() {
  //khai báo biến r là bán kính
  int r;
  //khai báo biến c là chu vi
  double c;
  //yêu cầu người dùng nhập vào bán kính
  cout<<"Nhap vao ban kinh r: ";
  cin>>r;
  //tính diện tích hình tròn
  c = 2 * r * PI;
  cout<<"Chu vi hinh tron la: "<< c;
  
  cout<<"\n-------------------------\n";
  cout<<"\nChuong trinh nay duoc dang tai Codehow.net\n";
}

Kết quả:

bai6 04 png

Lời kết

Như vậy là chúng ta đã cùng nhau tìm hiểu về phạm vi của biến trong C / C++ (biến cục bộ và biến toàn cục). Ở bài tiếp theo mình sẽ giới thiệu các bạn về kiểu dữ liệu trong C / C++, các bạn chú ý theo dõi nhé.

Cùng chuyên mục:

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán tính lũy thừa trong C / C++

Thuật toán tính lũy thừa trong C / C++

Top