Tham số biến trong C
Đôi khi trong một số trường hợp, khi bạn muốn có một hàm, mà có thể nhận các tham số thay cho các tham số đã được định nghĩa trước. Ngôn ngữ C cung cấp cho bạn giải pháp cho tình huống này và bạn được phép để định nghĩa một hàm mà chấp nhận các tham số hàm dựa vào các yêu cầu của bạn. Dưới đây ...
Đôi khi trong một số trường hợp, khi bạn muốn có một hàm, mà có thể nhận các tham số thay cho các tham số đã được định nghĩa trước. Ngôn ngữ C cung cấp cho bạn giải pháp cho tình huống này và bạn được phép để định nghĩa một hàm mà chấp nhận các tham số hàm dựa vào các yêu cầu của bạn. Dưới đây là ví dụ cho việc định nghĩa các hàm như vậy:
int tenham(int, ... ) { . . . } int main() { tenham(1, 2, 3); tenham(1, 2, 3, 4); }
Bạn nên ghi nhớ rằng hàm tenham() có tham số cuối dạng tĩnh, ví dụ: ba dấu chấm (…) và tham số trước nó luôn luôn là int mà sẽ biểu diễn tổng số tham số biến được truyền. Để sử dụng tính năng này, bạn cần sử dụng Header file là stdarg.h mà cung cấp các hàm và macro để thực hiện tính năng này theo các bước:
Bây giờ chúng ta theo các bước trên và viết một hàm đơn giản mà có thể nhận các tham số và trả lại giá trị trung bình của chúng:
#include <stdio.h> #include <stdarg.h> double giatriTB(int sothamso,...) { va_list thamso; double tong = 0.0; int i; /* khoi tao thamso cho sothamso (la so tham so) */ va_start(thamso, sothamso); /* truy cap tat ca tham so da duoc gan cho thamso */ for (i = 0; i < sothamso; i++) { tong += va_arg(thamso, int); } /* xoa bo nho danh rieng cho thamso */ va_end(thamso); return tong/sothamso; } int main() { printf("Gia tri trung binh cua 7, 8, 9, 10 la: %f ", giatriTB(4, 7,8,9,10)); printf("Gia tri trung binh cua 11, 22, 33 la: %f ", giatriTB(3, 11,22,33)); printf(" =========================== "); printf("code24h chuc cac ban hoc tot! "); }
Biên dịch và chạy chương trình C trên sẽ cho kết quả như dưới đây. Bạn nên ghi nhớ rằng hàm giatriTB() được gọi hai lần và trong mỗi lần thì tham số đầu tiên biểu diễn tổng các tham số biến được truyền. Chỉ có các tham số tĩnh sẽ được sử dụng để truyền số các tham số.
Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Các bài học lập trình C phổ biến khác tại code24h: