Mảng làm tham số
Bài học 9 trên 17 trong khóa học Hàm trong C của Coddy.
Hàm cũng có thể nhận một mảng làm tham số, giống như bất kỳ biến nào khác. Điểm khác biệt duy nhất là mảng được truyền vào hàm dưới dạng con trỏ, không giống các kiểu dữ liệu nguyên thủy khác được truyền theo giá trị.
Khi truyền một mảng vào hàm, hàm nhận được con trỏ đến phần tử đầu tiên của mảng.
Hãy xem ví dụ về cách sử dụng:
#include <stdio.h>
// Định nghĩa hàm
void printArray(char *arr[]) {
for (int i = 0; i <= 3; i++) {
printf("%s ", arr[i]);
}
printf("\n");
}
int main() {
char *a[] = {"C", "Java", "React", "Python"};
// Gọi hàm
printArray(a);
return 0;
}
Trong hàm main, ta định nghĩa một mảng đơn giản:
char *a[] = {"C", "Java", "React", "Python"};Trong hàm printArray, ta lặp từ 0 đến 3 và in ra từng giá trị:
for (int i = 0; i <= 3; i++) {
printf("%s ", arr[i]);
}Đầu ra sẽ như sau:
C Java React Python Lưu ý: Khi xử lý chuỗi, ta cần dùng rõ ràng dấu hoa thị (
*) để cho trình biên dịch biết mỗi chuỗi (ví dụ: "Java") là một phần tử của mảng. Nếu không, trình biên dịch sẽ coi mỗi ký tự (ví dụ: 'J') là một phần tử.
Thử thách
DễViết một hàm (function) có tên printDouble, nhận vào một mảng (array) số, nhân đôi từng phần tử (element) rồi in danh sách kết quả ra màn hình.
Ví dụ, với đầu vào:
2 6 8 10Đầu ra sẽ là:
4 12 16 20Tự làm thử
#include <stdio.h>
// Định nghĩa hàm
int main()
{
// Đừng thay đổi phần này
int nums[] = {10, 6, 22, 40, 1}};
// Gọi hàm
printDouble(nums);
return 0;
}Tất cả bài học trong Hàm trong C
Tự luyện tập: Trình biên dịch C online