Tổng quan
Trong ngôn ngữ C, cả Structure (cấu trúc) và Array (mảng) đều được sử dụng như các container (hàng đợi) cho các kiểu dữ liệu, tức là trong cả hai ta đều có thể lưu trữ dữ liệu và thực hiện các thao tác khác nhau trên chúng.
Dựa trên cơ chế triển khai nội bộ, dưới đây là những khác biệt cơ bản giữa hai cấu trúc dữ liệu này:
| STT | Tiêu chí | Structure (Cấu trúc) | Array (Mảng) |
|---|---|---|---|
| 1 | Định nghĩa | Structure là một cấu trúc dữ liệu dùng làm container có thể chứa các biến của nhiều kiểu dữ liệu khác nhau. | Array là một kiểu cấu trúc dữ liệu dùng làm container chỉ chứa các biến cùng một kiểu dữ liệu, không hỗ trợ nhiều kiểu dữ liệu khác nhau. |
| 2 | Cấp phát bộ nhớ | Cấp phát bộ nhớ cho dữ liệu trong Structure không nhất thiết phải nằm ở các vị trí bộ nhớ liên tiếp. | Trong Array, dữ liệu được lưu trữ trong bộ nhớ liên tục (contiguous memory allocation), nghĩa là các khối bộ nhớ được gán với các địa chỉ liên tiếp nhau. |
| 3 | Truy cập phần tử | Để truy cập phần tử trong Structure, bắt buộc phải biết tên của phần tử đó. | Trong Array, ta có thể truy cập phần tử thông qua chỉ số (index). |
| 4 | Con trỏ (Pointer) | Structure không có khái niệm Pointer bên trong. | Array triển khai con trỏ bên trong, con trỏ này luôn trỏ đến phần tử đầu tiên của mảng. |
| 5 | Khởi tạo (Instantiation) | Đối tượng Structure có thể được tạo sau khi khai báo, ở vị trí sau trong chương trình. | Trong Array, không thể tạo đối tượng sau khi đã khai báo. |
| 6 | Kiểu dữ liệu | Structure hỗ trợ nhiều biến khác kiểu dữ liệu làm đầu vào. | Array chỉ hỗ trợ các biến cùng một kiểu dữ liệu. |
| 7 | Hiệu năng | Structure do sử dụng kiểu dữ liệu do người dùng định nghĩa nên chậm hơn về hiệu năng, truy cập và tìm kiếm phần tử chậm hơn so với Array. | Array truy cập và tìm kiếm phần tử nhanh hơn, do đó hiệu năng tốt hơn. |