C รองรับฟังก์ชันที่รับพารามิเตอร์จำนวนไม่คงที่ (Variadic Function) โดยใช้ stdarg.h
ขั้นตอน
- ประกาศฟังก์ชันพารามิเตอร์สุดท้ายเป็น
...และก่อนหน้าเป็นintแทนจำนวนอาร์กิวเมนต์ - สร้างตัวแปร
va_list - ใช้
va_startเริ่มต้น - ใช้
va_argดึงค่าแต่ละอาร์กิวเมนต์ - ใช้
va_endทำความสะอาด
ตัวอย่าง: หาค่าเฉลี่ย
#include <stdio.h>
#include <stdarg.h>
double average(int num, ...) {
va_list valist;
double sum = 0.0;
va_start(valist, num);
for (int i = 0; i < num; i++)
sum += va_arg(valist, int);
va_end(valist);
return sum / num;
}
int main() {
printf("Average of 2,3,4,5 = %f\n", average(4, 2,3,4,5));
printf("Average of 5,10,15 = %f", average(3, 5,10,15));
return 0;
}
ผลลัพธ์
Average of 2, 3, 4, 5 = 3.500000 Average of 5, 10, 15 = 10.000000