Khi dùng mảng thường sẽ đi kèm 1 biến lưu size của mảng vì lý do
- có thể kiểm soát được input và ouput mong muốn
- tránh dùng vào ô nhớ mà đang được chương trình khác đang dùng -> lỗi
- tránh dùng vào ô nhớ nằm ngoài phạm vi cấp phát -> nhận được giá trị rác
int a[3];
bộ nhớ sẽ cấp phát cho 3 phân tử như sau, trong đó tên mảng chính là phần tử đầu tiên và bắt đầu đếm từ 0
có nghĩa là đến a3, thì con có a4, a5 … chính là các ô nhớ phía sau, vị trí đếm từ tên mảng, nghĩa là vị trí thứ 0 so với mảng và là vị trí thử 108 trong bộ nhớ -> có thể gán được giá trị cho a[n] phía sau, nhưng trường hợp sau sẽ lỗi
- ô nhớ a[n] đang được chương trình khác dùng
- ô nhớ a[n] được gán nằm ngoài phạm vi bộ nhớ
còn nếu 2 trường hợp trên không xảy ra thì vẫn gán được và sử dụng được
(ảnh lấy từ bài viết này Mảng một chiều C/C++)
thử 1 chương trình
int a[1];
a[1] = 123;
a[3] = 111;
for (int i = 0; i < 10; i++) cout << a[i] << " ";
kết quả