ในส่วนนี้เราจะมาดูวิธีการนับจำนวนอาร์กิวเมนต์ในกรณีตัวแปรจำนวนอาร์กิวเมนต์ในภาษาซี
C รองรับจุดไข่ปลา ใช้เพื่อนำจำนวนตัวแปรของอาร์กิวเมนต์มาใช้กับฟังก์ชัน ผู้ใช้สามารถนับอาร์กิวเมนต์โดยใช้หนึ่งในสามวิธีที่แตกต่างกัน
-
โดยส่งผ่านอาร์กิวเมนต์แรกเป็นจำนวนพารามิเตอร์
-
โดยส่งผ่านอาร์กิวเมนต์สุดท้ายเป็น NULL
-
ใช้ตรรกะเช่น printf() หรือ scanf() โดยที่อาร์กิวเมนต์แรกมีตัวยึดตำแหน่งสำหรับอาร์กิวเมนต์อื่น
ในโปรแกรมต่อไปนี้ เราจะทำจำนวนตัวแปรทั้งหมดของอาร์กิวเมนต์ที่ส่งผ่าน
โค้ดตัวอย่าง
#include<stdio.h>
#include <stdarg.h>
int get_avg(int count, ...) {
va_list ap;
int i;
int sum = 0;
va_start(ap, count); //va_start used to start before accessing arguments
for(i = 0; i < count; i++) {
sum += va_arg(ap, int);
}
va_end(ap); //va_end used after completing access of arguments
return sum;
}
main() {
printf("Total variable count is: %f", get_avg(5, 8, 5, 3, 4, 6));
} ผลลัพธ์
Total variable count is: 5