Search…

Mảng 1 Chiều - Mảng 2 Chiều

15/09/20202 min read
Tìm hiểu về mảng 1 chiều, mảng 2 chiều trong C++.

Mảng 1 chiều

Khai báo

#include 
int main()
{
	int a[11] = { 1, 2, 3, 4, 5, 6, 7, 8 };
	printf("%d", a[1]); // in giá trị ở vị trí "1" => a[1] =2
	return 0;
}

Mô hình hiển thị mảng 1 chiều

Mảng 2 chiều

Khai báo

#include 
int main()
{
	int a[3][4];
	a[0][0] = 8;
	a[0][1] = 9;
	a[0][2] = 2;
	a[0][3] = 6;

	a[1][0] = 1;
	a[1][1] = 5;
	a[1][2] = 4;
	a[1][3] = 2;

	a[2][0] = 3;
	a[2][1] = 1;
	a[2][2] = 4;
	a[2][3] = 8;
	
	printf("%d",a[1][2]); // xuất giá trị tại a[1][2] = 7;
	return 0;
}

Mô hình hiển thị mảng 2 chiều

Mô hình hiểu thị mảng 2 chiều
Mô hình hiểu thị mảng 2 chiều

 

Công thức tổng quát

Mô hình hiển thị mảng 2 chiều thành 1 chiều
Mô hình hiển thị mảng 2 chiều thành 1 chiều

Lưu ý

Thông thường đánh số mọi thứ tự từ 1 -> n, nhưng trong mảng để truy xuất giá trị,  bắt đầu đánh số từ 0 -> n..Cách đánh số từ 0 hơi đặc biệt với người mới bắt đầu.  Như đã được biết, 1 byte = 8 bit, được biểu diễn bằng số hexa với 8 ký tự với trạng thái đầu tiên là 0x00, tương đương với 000 000 00. Và bit là giá trị nhỏ nhất, nhận được 2 giá trị: 0 hoặc 1.

Nếu trạng thái đầu tiên là 0x01 thì sẽ phí 1 trạng thái 0x00, và trong lập trình thì không thể bỏ qua bất kỳ trạng thái nào, nhằm mục đích tối ưu.

Ở đây có 1 ví dụ nhỏ, nhằm mục đích thử nghiệm xem cách hoạt động với công thức tổng quát.

Mô hình hiển thị hoạt động của công thức tổng quát
Mô hình hiển thị hoạt động của công thức tổng quát

Lời kết

Như vậy, mảng 2 chiều được hiện thực là 1 bảng với Width và Height, nhằm mục đích minh họa cho dễ hiểu, nhưng máy sẽ lưu chúng thành 1 dãy các ô nhớ liền kề nhau, tức là lưu thành mảng 1 chiều.

Với công thức tổng quát  chuyển từ mảng 2 chiều thành 1 chiều, dễ dàng nhận thấy mối liên hệ Width và Height trong mảng 1 chiều, với Height chính là số lần lặp của Width. Giống như có 12 viên kẹo, để chia đều cho 4 người, thì mỗi người sẽ được 3 viên kẹo, vậy tương đương Width = 4 và Height = 3.

Tham khảo

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024