Mảng nhiều chiều trong C++

0

Tiếp theo của series này, ad sẽ giới thiệu với mọi người về mảng nhiều chiều, mảng nhiều chiều tuy không được sử dụng nhiều như mảng một chiều nhưng trong series thì ad cũng vẫn cần nói qua một số điều về mảng nhiều chiều và một số cách khai báo, khởi tạo và sử dụng mảng này.Đầu tiên, chúng ta sẽ cùng đi tìm hiểu xem mảng nhiều chiều là gì và chúng hoạt động như thế nào

Mảng nhiều chiều là gì?

Trong phần trước đây ad đã nói về định nghĩa mảng, mảng một chiều là tập hợp các phần tử có cùng kiểu dữ liệu, tương tự như thế, mảng nhiều chiều cũng là một mảng chứa nhiều phần tử tuy nhiên các phần tử lại là các mảng một chiều có kích thước giống nhau và vẫn được truy xuất qua chỉ số.

mảng một chiều

Cách lưu trữ của mảng nhiều chiều trên bộ nhớ tương tự với mảng một chiều vì nó được chuyển đổi thành mảng một chiều.

ss_2

Khai báo mảng nhiều chiều

Cách khai báo trong C++ như sau:

kiểu_dữ_liệu tên_mảng[số_phần_tử_chiều_1][số_phần_tử_chiều_2]...[ số_phần_tử_chiều_n];

Quy tắc của các kiểu dữ liệu, tên phần tử giống mảng một chiều.


// Khai báo mảng 2 chiều 3 x 4 kiểu int
int a[3][4];

// Khai báo mảng 3 chiều 3 x 4 x 5 kiểu float
float a[3][4][5];

Khởi tạo giá trị cho phần tử trong mảng

Ta có thể làm tương tự như với mảng một chiều:

int a[3][2] = {1,2,3,4,5,6};

Cách thứ 2, khởi tạo theo từng chiều riêng biệt


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

Nếu bạn muốn lược bỏ số phần tử đầu tiên, ta làm như sau:


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

LƯU Ý

Chỉ được bỏ trống số_phần_tử đầu tiên, nếu không sẽ xảy ra lỗi vì không xác định được kích thước

Ví dụ khai báo mảng a như sau là không hợp lệ:


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

Mảng trên có 8 phần tử int nhưng không biết kích thước mảng là 2 x 4, 4 x 2, 1 x 8 hay 8 x 1.

Chúng ta có thể khai báo giá trị bằng vòng lặp, bao nhiêu chiều sẽ có bấy nhiêu vòng lặp lồng nhau.


int a[5][5];

for (j = 0; j < 5; j++)
{
for (i = 0; i < 5; i++)
{
a[i][j] = value;
}
}

Truy xuất phần tử

Chúng ta dùng chỉ số của từng chiều để truy xuất đến phần tử có chỉ số đó.

mảng nhiều chiều

 

Chú ý: Các chỉ số sẽ bắt đầu từ 0 chứ không phải 1.

 

Leave A Reply

Your email address will not be published.