1-D arrays: store, index, and traverse · Mảng 1-D: lưu trữ, truy cập theo chỉ mục và duyệt qua
A row of boxes
- An array is a row of variables of the same type, kept side by side in memory.
int a[5];makes room for fiveints. They are one block, reached by number.- You can fill them when you create them:
int a[] = {10, 20, 30};makes an array of three.
Một hàng các ô vuông
- Một mảng là một hàng các biến cùng loại, được giữ liền kề nhau trong bộ nhớ.
int a[5];tạo không gian cho nămints. Chúng là một khối duy nhất, truy cập bằng số.- Bạn có thể điền chúng khi tạo:
int a[] = {10, 20, 30};tạo một mảng gồm ba phần tử.
Indexing from 0
- Each item has an index (a position). The first index is
0, not1. a[0]is the first item,a[1]the second, anda[n - 1]is the last in an array ofnitems.- Reading or writing outside the array (like
a[5]in a 5-item array) is a serious bug.
Chỉ số bắt đầu từ 0
- Mỗi phần tử có một chỉ số (vị trí). Chỉ số đầu tiên là
0, không phải1. a[0]là phần tử đầu tiên,a[1]là phần tử thứ hai, vàa[n - 1]là phần tử cuối cùng trong một mảng cónphần tử.- Đọc hoặc ghi ngoài giới hạn mảng (như
a[5]trong mảng 5 phần tử) là một lỗi nghiêm trọng.
Traversing with a loop
- To visit every item, run an index from
0up ton - 1with aforloop. - Inside the loop, use
a[i]to read or change the item at positioni. - This is how you sum, count, or search an array.
Duyệt qua bằng vòng lặp
- Để truy cập mọi phần tử, hãy chạy chỉ số từ
0đếnn - 1với mộtforloop. - Bên trong vòng lặp, sử dụng
a[i]để đọc hoặc thay đổi phần tử tại vị tríi. - Đây là cách bạn tính tổng, đếm hoặc tìm kiếm trong mảng.
Arrays don't know their own length
- An array does not carry its own size. A function cannot ask "how long are you?".
- So you always pass the length next to the array:
sum(a, n). - Use
const int a[]in a parameter to promise you will only read the array, not change it.
Mảng không biết độ dài của chính nó
- Một mảng không mang kích thước của riêng nó. Một hàm không thể hỏi "bạn dài bao nhiêu?"
- Vì vậy, bạn luôn phải truyền độ dài cạnh mảng:
sum(a, n). - Sử dụng
const int a[]trong tham số để hứa rằng bạn chỉ đọc mảng, không thay đổi nó.
#include <stdio.h>
int main(void) {
int a[] = {10, 20, 30, 40};
int n = 4, total = 0;
for (int i = 0; i < n; i++) {
total += a[i];
}
printf("%d\n", total); // 100
return 0;
}
Common mistakes
- C does NOT check array bounds:
a[n]in a size-narray is undefined. - Valid indexes run
0ton - 1.
Lỗi thường gặp
- C KHÔNG kiểm tra giới hạn mảng:
a[n]trong mảng có size-nlà xác định không rõ ràng. - Các chỉ số hợp lệ chạy từ
0đếnn - 1.
Now you try
- Pass both the array and its length
n, and loop the index from0ton - 1. - For the function tasks, do not write a
main— the checker provides one.
Bây giờ bạn thử
- Truyền cả mảng và độ dài của nó
n, và lặp chỉ số từ0đếnn - 1. - Đối với các nhiệm vụ hàm, không viết một
main— trình kiểm tra sẽ cung cấp cho bạn một cái.
Arrays are indexed · Mảng được truy cập theo chỉ mục
An array stores values in order; reach one with a[i]. · Một mảng lưu các giá trị theo thứ tự; truy cập một phần tử bằng a[i].
The array a and its length n are given. In main, add up all n items and print the total on its own line. · Mảng a và độ dài n đã được cung cấp. Trong main, tính tổng tất cả các phần tử n và in tổng ra dòng riêng.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Complete int sum(const int a[], int n) so it returns the total of the array's n items (0 when n is 0). Do not write a main. · Hoàn thiện int sum(const int a[], int n) sao cho trả về tổng của ⟨n⟩ phần tử của mảng (0 khi ⟨n⟩ là ⟨0⟩). Đừng viết một main.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Complete void double_all(int a[], int n) so it doubles every item of the array, in place (no return value). Do not write a main. · Hoàn thiện void double_all(int a[], int n) sao cho nhân đôi mọi phần tử của mảng ngay tại chỗ (không có giá trị trả về). Đừng viết một main.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.