Ở đây ta xem cách đếm số đối số trong trường hợp variadic function.
C hỗ trợ ellipsis ... cho hàm nhận số lượng đối số biến. Có 3 cách đếm:
- Tham số đầu tiên là số lượng tham số.
- Tham số cuối cùng là NULL.
- Dùng logic như
printf()/scanf(): tham số đầu có placeholder cho các tham số khác.
Chương trình đếm tổng số đối số biến:
Ví dụ
#include <stdio.h>
#include <stdarg.h>
int get_avg(int count, ...) {
va_list ap;
int i, sum = 0;
va_start(ap, count);
for (i = 0; i < count; i++) {
sum += va_arg(ap, int);
}
va_end(ap);
return sum;
}
int main() {
printf("Total variable count is: %f", get_avg(5, 8, 5, 3, 4, 6));
return 0;
}
Kết quả
Total variable count is: 5