Cách khai báo mảng trong C++ (mảng một chiều và nhiều chiều)

Trong bài này mình sẽ hướng dẫn cách khai báo mảng trong C + +, đó là khai báo mảng một chiều và khai báo mảng nhiều chiều trong C + + .

test php

banquyen png

Bài viết này được đăng tại

freetuts.net

, không được copy dưới mọi hình thức.

Ở những bài học kinh nghiệm trước tất cả chúng ta đã cùng khám phá về biến được dùng để tàng trữ giá trị trong bộ nhớ. Giả sử tất cả chúng ta cần tàng trữ 1000 số nguyên trong bộ nhớ, thì tất cả chúng ta sẽ khai báo đúng 1000 tên biến khác nhau. Điều này rất là kinh điển, tất cả chúng ta phải tâm lý làm thế nào cho 1000 tên biến phải có nghĩa, chương trình của tất cả chúng ta sẽ trở nên rất dài và nhìn rất lộn xộn .

Trong C++ hổ trợ cấu trúc mảng giúp chúng ta giải quyết khó khăn trên, chỉ cần khai báo 1 mảng có 1000 phần tử là được. Và trước khi tìm hiểu về cách khai báo mảng trong C++ thì hãy cùng mình lướt qua một chút về ưu điểm và nhược điểm khi sử dụng mảng đã nhé.

1. Ưu và nhược điểm của mảng trong C++

Cũng như những ngôn từ lập trình khác, mảng trong C + + là tập hợp những thành phần cùng kiểu liên tục nhau trong bộ nhớ .
Mảng trong C + + có độ dài cố định và thắt chặt, được đánh theo chỉ số từ 0 đến độ dài mảng – 1. Như hình dưới đây :

one 2Bdimension 2Barray jpg

Ưu điểm

  • Truy xuất phần tử mảng ngẩu nhiên, dựa vào chỉ số (index) của mảng.
  • Tối ưu code (chương trình chúng ta sẽ ít code hơn).
  • Dễ dàng duyệt qua từng phần tử mảng.
  • Dễ dàng thao tác dữ liệu.
  • Dễ dàng sắp xếp dữ liệu.

Nhược điểm

  • Mảng có độ dài cố định.

Trong C + + có 2 loại mảng đó là mảng một chiều và mảng nhiều chiều. Tuy nhiên trong khoanh vùng phạm vi bài này mình chỉ hướng dẫn những nội dung gồm :

  • Khai báo mảng C++ môt chiều
  • Khai báo mảng C++ hai chiều

2. Cách khai báo mảng một chiều trong C++

Mình đã có một bài viết về cấu trúc mảng trong C + +, trong bài đó mình đã hướng dẫn cách khai báo mảng một chiều rồi. Tuy nhiên, để bạn dễ theo dõi và so sánh với mảng nhiều chiều thì mình sẽ nhắc lại một chút ít nhé .

Khai báo mảng một chiều

Để khai báo một mảng một chiều trong C + +, tất cả chúng ta cần chỉ rõ kiểu tài liệu của mảng, tên mảng và số lượng thành phần của mảng. Cú pháp khai báo mảng một chiều trong C + + như sau :

Cú pháp

KieuDuLieu TenMang[KichCo];

Kích cở của mảng phải là một số nguyên lớn hơn 0, còn kiều tài liệu hoàn toàn có thể là bất kỳ kiểu tài liệu nào trong C + +. Ví dụ tất cả chúng ta có mảng số nguyên gồm 1000 thành phần sẽ được khai báo như sau :

int Diem[1000];

Khởi tạo giá trị mảng một chiều

Trong C + + được cho phép tất cả chúng ta khởi tạo giá trị cho những thành phần mảng như sau :

int Diem[7] = {2, 9, 8, 9, 1, 10, 5};

Hoặc

int Diem[7] = {2, 9, 8};

Số phần tử ở giữa 2 dấu {} không được lớn hơn số phần tử được khai báo trong dấu [].

Chúng ta cũng hoàn toàn có thể khởi tạo giá trị cho mảng bằng cách bỏ lỡ kích cở của mảng như sau :

int Diem[] = {3, 5, 8, 9, 1, 5, 7, 3};

Chúng ta cũng hoàn toàn có thể khởi tạo giá trị cho từng thành phần một trong mảng. Ví dụ tất cả chúng ta khởi tạo giá trị cho thành phần thứ 4 .

int Diem[5]; //Khai bao mang so nguyen gom co 5 phan tu
Diem[3]= 8; //Khoi tao gia tri cho phan tu thu 4 la 8

Bởi vì mảng có chỉ số ( index ) khởi đầu bằng 0 nên thành phần thứ 4 sẽ có chỉ số ( index ) là 3 .

Truy xuất các phần tử mảng một chiều

Chúng ta hoàn toàn có thể truy xuất giá trị của bất kể thành phần nào trong mảng bằng cách gọi tên mảng và chỉ số ( index ). Cú pháp như sau :

TenMang[index]

Ví dụ ta có mảng Diem gồm 10 thành phần như sau :

 int Diem[10] = {1, 3, 4, 5, 6, 1, 9, 4, 10, 5};

Chúng ta sẽ lấy giá trị của thành phần thứ 3, thứ 6, thứ 10 lần lượt như sau :

Ví dụ

#include   
using namespace std;  
int main()  
{  

   int Diem[10] = {1, 3, 4, 5, 6, 1, 9, 4, 10, 5};
   int a3 = Diem[2];
   cout << "Phan tu thu 3 = " << a3 << endl;
   int a6 = Diem[6];
   cout << "Phan tu thu 6 = " << a6 << endl;
   int a10 = Diem[9];
   cout << "Phan tu thu 10 = " << a10 << endl;
}  

Kết quả của chương trình trên là :

array ex1 JPG

Chúng ta muốn truy xuất lần lượt tất cả các phần tử của mảng chúng ta có thể sử dụng vòng lặp trong c++ như while, for, do while. Bắt đầu từ 0 đến kích cở mảng -1.

Ví dụ mảng một chiều

Chúng ta cùng xem một ví dụ đơn thuần về mảng một chiều trong C + + như sau :

Ví dụ

#include   
using namespace std;  
int main()  
{  
    int arr[8] = {3, 5, 1, 3, 5, 6, 8, 12}; 
    cout << "Danh sach cac phan tu cua mang arr nhu sau: " << endl;
    for (int i = 0; i < 8; i++)    
    {    
            cout << "   arr[" << i + 1 << "] = " << arr[i] << endl;    
    }    
}  

Và hiệu quả sau khi thực thi đoạn code trên :

array ex JPG

Chúng ta thử truy xuất thành phần ở ngoài khoanh vùng phạm vi khai báo của mảng như sau :

Ví dụ

#include   
using namespace std;  
int main()  
{  
   int Diem[10] = {1, 3, 4, 5, 6, 1, 9, 4, 10, 5};
   int a11 = Diem[10];
   cout << "Phan tu thu 11 = " << a11 << endl;
   int a = Diem[-5];
   cout << "Phan tu thu -1 = " << a << endl;
}  

Và hiệu quả sau khi thực thi đoạn code trên :

ex array out bound JPG

Như vậy trong C + + không có báo lỗi biên dịch khi truy xuất thành phần mảng ra khỏi khoanh vùng phạm vi khai báo của mảng, tuy nhiên khi thực thi thì hiệu quả không như tất cả chúng ta mong đợi .

3. Cách khai báo mảng nhiều chiều trong C++

Cũng giống như mảng một chiều, mảng nhiều chiều cũng gồm có nhiều thành phần, tuy nhiên mỗi thành phần là một mảng 1 chiều. Và trong khoanh vùng phạm vi bài học kinh nghiệm này tất cả chúng ta chỉ khám phá đến mảng hai chiều thôi nhé, vì việc giải quyết và xử lý mảng 3 hay 4 chiều là rất phức tạp .

Cú pháp mảng nhiều chiều

Cú pháp của mảng nhiều chiều trong C + + như sau :

Cú pháp

type name[size1][size2]...[sizeN];

Ví dụ tất cả chúng ta có mảng 4 chiều có những kích cở lần lượt là 3, 4, 2, 7 sẽ được khai báo như sau :

int ToaDo[3][4][2][7]

4. Cách khai báo mảng hai chiều trong C++

Trong bài học kinh nghiệm thời điểm ngày hôm nay tất cả chúng ta chỉ khám phá mảng 2 chiều trong C + + thôi nhé. Mảng nhiều hơn 2 chiều trong thực tiễn rất ít sử dụng, những bạn hoàn toàn có thể khám phá thêm trên mạng nhé .

Khai báo mảng 2 chiều

Cấu trúc của mảng 2 chiều giống như một ma trận, nó có chiều dài và chiều rông, và số thành phần của mảng chính là tích của chiều dài nhân với chiều rộng .
Mảng 2 chiều là một hình thức đơn thuần nhất của mảng nhiều chiều, thực chất của mảng 2 chiều là 2 mảng 1 chiều .
Mảng 2 chiều trong C + + được khai báo theo cú pháp như sau :

Cú pháp

KieuDuLieu  TenMang[kichco1][kichco2];

Trong đó :

  • KieuDuLieu: Là kiểu dữ liệu của phần tử trong mảng, kiểu dữ liệu có thể là một trong các kiểu dữ liệu được hổ trợ trong C++.
  • TenMang: Là tên hợp lệ trong C++.

Giả sử tất cả chúng ta có mảng a có 3 dòng và 4 cột được minh họa như hình dưới đây :

two dimensional arrays jpg

Khởi tạo giá trị mảng hai chiều

Giả sử tất cả chúng ta khỏi tạo giá trị cho mảng a có 3 dòng và 4 cột như sau :

int a[3][4] = {  
   {0, 1, 2, 3},  
   {4, 5, 6, 7},  
   {8, 9, 10, 11}
};

Hoặc tất cả chúng ta cũng hoàn toàn có thể khởi tạo giá trị trên như sau :

int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};

Truy xuất phần tử mảng hai chiều

Trong C + +, để truy xuất thành phần mảng trải qua chỉ số của dòng và chỉ số của cột như sau :

int test = a[2][3];

Ví dụ mảng hai chiều

Chúng ta cùng xem xét một ví dụ đơn thuần về mảng 2 chiều trong C + + như sau :

Ví dụ

#include 
using namespace std;
 
int main () {
   int a[3][2] = { {0,0}, {2,2}, {5,5}}; //khai bao va khoi tao gia tri cho mang a gom 3 dong va 2 cot
   
   cout << "Danh sach cac phan tu trong mang a nhu sau: " << endl;
 
   // Duyet qua tung phan tu cua mang a
   for ( int i = 0; i < 3; i++ ) {
      for ( int j = 0; j < 2; j++ ) {
         cout << "   a[" << i << "][" << j << "] =  " << a[i][j] << endl;
      }
   }
 
   return 0;
}

Và tác dụng sau khi thực thi đoạn code trên như sau :

array multi ex JPG

5. Kết luận

Như vậy là tất cả chúng ta đã tìm hiểu và khám phá xong về cách khai báo mảng trong C + + rồi. Trong bài này tất cả chúng ta chỉ cần nhớ cách khai báo mảng, khởi tạo giá trị cho thành phần mảng và truy xuất thành phần mảng như thế nào. Vì màng trong C + + rất tiếp tục được sử dụng, những bạn nhớ ghi nhớ nhé .
Vậy tất cả chúng ta kết thúc bài học kinh nghiệm này ở đây. Bài học tiếp theo tất cả chúng ta sẽ cùng tìm hiểu và khám phá về mảng được sử dụng như thể tham số của hàm. Các bạn nhớ theo dõi nhé .