פונקציה עם מספר משתנה של ארגומנטים
שיעור 10 מתוך 17 בקורס פונקציות ב-C של Coddy.
ב־C, כמו בשפות תכנות אחרות, קיים מושג שנקרא פונקציה וריאדית, כלומר פונקציה שמקבלת מספר בלתי מוגבל של פרמטרים.
כדי להשתמש בפונקציה וריאדית, תחילה עלינו לכלול את קובץ הכותרת <stdarg.h>.
נראה דוגמה כדי להבין איך זה עובד:
#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;
}בדוגמה הזו, הפונקציה sum מחשבת את הסכום של מספר משתנה של ערכי מספרים שלמים.
הכריזו על משתנה שיכיל את רשימת הארגומנטים באמצעות המאקרו
<strong>va_list</strong>: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);בפונקציה
<strong>main</strong>, קראו לפונקציה<strong>sum</strong>כך:sum(2, 20, 30);
אתגר
קלבאמצעות פונקציה וריאדית, צרו פונקציה בשם average שמחשבת ומדפיסה את ממוצע הציונים של התלמידים.
נסו בעצמכם
#include <stdio.h>
#include <stdarg.h>
// פונקציה לחישוב הממוצע
int main() {
// יש לקרוא לפונקציה בעלת מספר משתנה של ארגומנטים | אין לשנות זאת
average(4, 85, 90, 78, 92);
return 0;
}כל השיעורים ביחידה פונקציות ב-C
1מבוא
מבוא2פונקציות ב-C
מבואפרמטרים של פונקציהערך מוחזרתחום הנראות של משתניםמשתנה חיצוניערך לעומת מצביעפונקציה רקורסיביתמערך כפרמטרפונקציה עם מספר משתנה של ארגומנטיםאתגר סיכוםתרגלו בעצמכם: קומפיילר C אונליין