Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

Variable Length Argument ในภาษา C

C รองรับฟังก์ชันที่รับพารามิเตอร์จำนวนไม่คงที่ (Variadic Function) โดยใช้ stdarg.h

ขั้นตอน

  1. ประกาศฟังก์ชันพารามิเตอร์สุดท้ายเป็น ... และก่อนหน้าเป็น int แทนจำนวนอาร์กิวเมนต์
  2. สร้างตัวแปร va_list
  3. ใช้ va_start เริ่มต้น
  4. ใช้ va_arg ดึงค่าแต่ละอาร์กิวเมนต์
  5. ใช้ 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