C++ không cho phép truyền cả mảng theo giá trị (copy) vào hàm. Thay vào đó, mảng tự động chuyển thành con trỏ trỏ đến phần tử đầu tiên (array-to-pointer decay).
Ba cách khai báo tham số hàm (tương đương nhau)
void func(int *arr)– Con trỏ.void func(int arr[10])– Mảng có kích thước (kích thước bị bỏ qua).void func(int arr[])– Mảng không kích thước (phổ biến nhất).
Cả ba đều nhận một int*. Kích thước mảng không được truyền tự động, phải truyền riêng tham số size.
Ví dụ: Tính trung bình cộng
#include <iostream>
using namespace std;
double getAverage(int arr[], int size) {
int sum = 0;
for (int i = 0; i < size; ++i)
sum += arr[i];
return static_cast<double>(sum) / size;
}
int main() {
int balance[5] = {1000, 2, 3, 17, 50};
double avg = getAverage(balance, 5);
cout << "Trung bình: " << avg << endl; // 214.4
return 0;
}
Kết quả
Trung bình: 214.4
Lưu ý: C++ không kiểm tra giới hạn mảng (bounds checking) cho tham số hàm.