Kỹ thuật lập trình với kiểu cấu trúc và con trỏ trong C++
Một biến con trỏ không chỉ lưu trữ địa chỉ của các biến có kiểu dữ...
Kết quả sẽ mở trong tab mới, giới hạn trong website này.
Truy cập nhanh
Tìm kiếm gần đây
Bài này sẽ giới thiệu khái niệm cấu trúc dữ liệu dạng mảng. Cách khai báo và khởi tạo mảng một chiều trong C++. 1. Mảng là gì? Tại sao phải sử dụng mảng? Giả sử, trong một chương trình cần lưu trữ 3 số nguyên để tính toán? Đơn giản là khai báo 3 […]
Bài này sẽ giới thiệu khái niệm cấu trúc dữ liệu dạng mảng. Cách khai báo và khởi tạo mảng một chiều trong C++.
Giả sử, trong một chương trình cần lưu trữ 3 số nguyên để tính toán? Đơn giản là khai báo 3 biến int a1, a2, a3;
Nhưng trong chương trình cần lưu trữ 100 số nguyên? Khai báo 100 biến kiểu số nguyên? Muốn nhập và lưu trữ n số nguyên thì phải thực hiện 100 lần. Cách xử lý như thế lại quá “cồng kềnh”, chỉ khổ thân coder thôi.
Giải pháp: Cần có một cấu trúc dữ liệu cho phép lưu trữ một dãy các số nguyên và dễ dàng truy xuất. Đó là mảng (array).
Mảng (array) là một cấu trúc dữ liệu lưu trữ một dãy các biến có cùng kiểu dữ liệu như dãy các số nguyên, dãy các ký tự,…
Kích thước của mảng (số lượng biến trong mảng) được xác định ngay khi khai báo và không thay đổi. Mảng được cấp phát một khối nhớ liên tục để lưu trữ các biến trong mảng.
Mảng một chiều là tập hợp tuần tự các phần tử có cùng kiểu dữ liệu và các phần tử được lưu trữ trong một dãy các ô nhớ liên tục trên bộ nhớ.
Mỗi phần tử của mảng một chiều được truy xuất bởi tên mảng và vị trí trong mảng gọi là “chỉ mục”, được đặt trong cặp dấu ngoặc vuông [ ]. Vị trí trong mảng luôn bắt đầu từ 0 đến tổng số phần tử trừ đi 1.
<kiểu dữ liệu> <tên biến mảng>[<số phần tử>];
Lưu ý: Phải xác định <số phần tử> cụ thể (hằng) khi khai báo.
Ví dụ: int Mang1Chieu[10];
Phải xác định cụ thể số phần tử của mảng ngay lúc khai báo. Không được sử dụng biến để khai báo số phần tử của mảng.
int n1 = 10; int a[n1];//error: expected constant expressionNên sử dụng khai báo hằng số #define để định nghĩa số phần tử của mảng.
#define n1 10
#define n2 20
int a[n1]; //tương đương int a[10];
int b[n1][n2]; //tương đương int b[10][20];
int a[4] = {2912, 1706, 1506, 1904};int a[4] = {2912, 1706};Các phần tử trong mảng không được gán giá trị khởi tạo thì sẽ tự động nhận giá trị ngẫu nhiên. Trong mảng, giá trị ngẫu nhiên này thường là 0.
int a[4] = {0};int a[] = {2912, 1706, 1506, 1904};Chương trình tự động hiểu số lượng các phần tử trong mảng là 4, không cần khai báo <số phần tử> (int a[4]) trong mảng.
Truy xuất thông qua chỉ số phần tử của mảng
<tên biến mảng> [<chỉ số>]
Các truy xuất hợp lệ: a[0], a[1], a[2], a[3]
Các truy xuất không hợp lệ: a[-1], a[4], a[5],…
Khai báo int a[]; sẽ bị lỗi, khai báo đúng là int a[100];
Khai báo int n1 = 10; int a[n1]; sẽ bị lỗi khai báo đúng là int a[10];
Khởi tạo int a[4]; a = {2912, 1706, 1506, 1904}; sẽ bị lỗi, khởi tạo đúng là int a[4] = {2912, 1706, 1506, 1904};
Chỉ số của mảng int a[4]; là 0, 1, 2, 3 nên truy xuất các truy xuất như a[-1] = 1; a[10] = 0; là sai.