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

การใช้จำนวนอาร์กิวเมนต์แปรผัน (Variable Arguments) ใน C++


Variable Number of Arguments ใน C++

บางครั้งอาจต้องการฟังก์ชันที่รับจำนวนพารามิเตอร์ไม่คงที่ แทนที่จะเป็นจำนวนคงที่ C/C++ รองรับความสามารถนี้ โดยใช้ ellipsis (...) และ header <cstdarg> (หรือ stdarg.h)

ฟังก์ชันจะมีพารามิเตอร์สุดท้ายเป็น ellipsis และพารามิเตอร์ก่อนหน้าเป็น int แทนจำนวนอาร์กิวเมนต์ ขั้นตอนการใช้งาน:

  1. กำหนดฟังก์ชันพารามิเตอร์สุดท้ายเป็น ... และพารามิเตอร์ก่อนหน้าเป็น int
  2. สร้างตัวแปร va_list ในฟังก์ชัน
  3. ใช้ va_start เริ่มต้น va_list ด้วยจำนวนอาร์กิวเมนต์
  4. ใช้ va_arg และ va_list เข้าถึงแต่ละอาร์กิวเมนต์
  5. ใช้ va_end ทำความสะอาดหน่วยความจำของ va_list

ตัวอย่างโค้ด: หาค่าเฉลี่ย

#include <iostream>
#include <cstdarg>
using namespace std;

double average(int num, ...) {
    va_list valist;
    double sum = 0.0;
    int i;
    va_start(valist, num);
    for (i = 0; i < num; i++)
        sum += va_arg(valist, int);
    va_end(valist);
    return sum / num;
}

int main() {
    cout << "Average of 2, 3, 4, 5 = " << average(4, 2,3,4,5) << endl;
    cout << "Average of 5, 10, 15 = " << average(3, 5,10,15) << endl;
}

ผลลัพธ์

Average of 2, 3, 4, 5 = 3.5
Average of 5, 10, 15 = 10