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

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

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.

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.