Mảng và hàm
Thuộc phần Kiến thức nền tảng trong hành trình C++ của Coddy. Bài học 62 trên 74.
Bạn không thể truyền trực tiếp toàn bộ mảng (array) vào hàm (function). Khi bạn cố truyền một mảng vào hàm, nó chuyển thành con trỏ (pointer) trỏ đến phần tử đầu tiên.
Ví dụ:
int numbers[5] = {1, 2, 3, 4, 5};
void processArray(int arr[]) {
int size = std::size(arr);
}std::size(arr) không biên dịch được ở đây vì arr thực chất là một con trỏ, không phải một mảng, và con trỏ không lưu kích thước của mảng. Bạn sẽ học về con trỏ trong khóa học tiếp theo.
Đó là lý do khi truyền mảng vào hàm (function), chúng ta thường cần truyền kích thước dưới dạng một tham số riêng:
void processArray(int arr[], int size) {
// Giờ bạn có thể thao tác an toàn với mảng (array) bằng tham số (parameter) size
}Sau đây là cách gọi hàm:
int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);Ngoài ra, bạn không thể trả về một mảng từ hàm:
int[] processArray(int arr[]) {
return arr;
}Cách này không hợp lệ. Thay vào đó, bạn nên dùng cú pháp *:
int* processArray(int arr[]) {
return arr;
}
int* newArr = processArray(arr);Cú pháp dấu sao (*) dùng để chỉ con trỏ, nội dung này sẽ được đề cập trong khóa học tiếp theo.
Tự làm thử
Bài học này không có thử thách code.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
Tự luyện tập: Trình biên dịch C++ online