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

Hàm với số lượng tham số biến đổi (Variadic arguments) trong C++


C/C++ hỗ trợ hàm nhận số lượng đối số biến đổi qua ... (ellipsis) và header <cstdarg> (stdarg.h).

Các macro chính

  • va_list ap – Biến lưu danh sách đối số.
  • va_start(ap, last_fixed) – Khởi tạo ap sau tham số cố định cuối cùng.
  • va_arg(ap, type) – Lấy đối số tiếp theo kiểu type.
  • va_end(ap) – Dọn dẹp.

Ví dụ: Tính trung bình

#include <iostream>
#include <cstdarg>
using namespace std;

double average(int count, ...) {
    va_list ap; va_start(ap, count);
    double sum = 0;
    for (int i=0; iAvg(2,3,4,5) = 3.5
Avg(5,10,15) = 10

Lưu ý: Tham số đầu tiên thường là số lượng đối số. Kiểu dữ liệu phải thống nhất hoặc tự quản lý. C++11 khuyến nghị dùng variadic template an toàn kiểu hơn.