Variable-length argument là gì?

Phrase Programming

Variable-length argument là một tính năng cho phép một hàm (function) nhận bất kỳ số lượng đối số (argument) nào. Có những tình huống chúng ta muốn một hàm xử lý số lượng đối số thay đổi theo yêu cầu như tính tổng của các số đã cho hoặc tìm số nhỏ nhất của các số đã cho,... Trong C số lượng các đối số được biểu thị bằng ba dấu chấm (…). Dưới đây là một ví dụ để tìm số nhỏ nhất trong các số nguyên đã cho.


// C program to demonstrate use of variable
// number of arguments.
#include 
#include 
  
// this function returns minimum of integer
// numbers passed.  First argument is count
// of numbers.
int min(int arg_count, ...)
{
    int i;
    int min, a;
  
    // va_list is a type to hold information about
    // variable arguments
    va_list ap;
  
    // va_start must be called before accessing
    // variable argument list
    va_start(ap, arg_count);
  
    // Now arguments can be accessed one by one
    // using va_arg macro. Initialize min as first
    // argument in list
    min = va_arg(ap, int);
  
    // traverse rest of the arguments to find out minimum
    for (i = 2; i 

Ở đây chúng ta sử dụng macro để triển khai chức năng của các đối số.

  • Sử dụng biến kiểu va_list trong định nghĩa hàm.
  • Sử dụng tham số int và macro va_start để khởi tạo biến va_list thành danh sách đối số. Macro va_start được định nghĩa trong file header stdarg.h.
  • Sử dụng macro va_arg và biến va_list để truy cập từng mục (item) trong danh sách đối số.
  • macro va_end để dọn dẹp bộ nhớ được gán cho biến va_list.
Learning English Everyday