Menu
CoddyTech

Hàm có số lượng tham số thay đổi

Bài học 10 trên 17 trong khóa học Hàm trong C của Coddy.

Trong C, cũng như các ngôn ngữ lập trình khác, có một khái niệm gọi là hàm variadic, tức là hàm nhận số lượng tham số không giới hạn.

Để dùng hàm variadic, trước tiên ta cần thêm tệp tiêu đề <stdarg.h>.

Hãy xem ví dụ để biết cách hoạt động:

#include <stdio.h>
#include <stdarg.h>
int sum(int num, ...) {
   va_list list;        
   va_start(list, num);
   int sum = 0;
   for (int i = 0; i < num; i++) {
       sum += va_arg(list, int); 
   }
   va_end(list); 
   printf("%d", sum);
}
int main() {
    sum(2, 20, 30);          
   return 0;
}

Trong ví dụ này, hàm sum tính tổng một số lượng giá trị số nguyên thay đổi.

  1. Khai báo biến để lưu danh sách đối số bằng macro <strong>va_list</strong>:

    va_list list;
  2. Khởi tạo danh sách đối số:

    va_start(list, num);
  3. Khai báo biến để lưu tổng:

    int sum = 0;
  4. Duyệt qua tất cả phần tử, lấy từng đối số rồi cộng vào tổng:

    for (int i = 0; i < num; i++) {
           sum += va_arg(list, int); 
       }
  5. Dọn dẹp danh sách đối số sau khi tính xong:

     va_end(list); 
  6. Trong hàm <strong>main</strong>, gọi hàm <strong>sum</strong> như sau:

      sum(2, 20, 30);  

     

 

challenge icon

Thử thách

Dễ

Dùng hàm nhận số lượng đối số linh hoạt, tạo một hàm có tên average để tính và in ra điểm trung bình của học sinh.

Tự làm thử

#include <stdio.h>
#include <stdarg.h>

// Hàm (function) tính giá trị trung bình 


int main() {
    
    // Gọi hàm nhận số lượng đối số không cố định | Đừng thay đổi dòng này
    average(4, 85, 90, 78, 92);

    return 0;
}

Tất cả bài học trong Hàm trong C

Tự luyện tập: Trình biên dịch C online