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ạoapsau tham số cố định cuối cùng.va_arg(ap, type)– Lấy đối số tiếp theo kiểutype.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; i
Kết quả
Avg(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.