Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Truyền mảng vào hàm trong C++

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)

  1. void func(int *arr) – Con trỏ.
  2. void func(int arr[10]) – Mảng có kích thước (kích thước bị bỏ qua).
  3. 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.