Menu
Coddy logo textTech

פונקציה עם מספר משתנה של ארגומנטים

שיעור 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 מחשבת את הסכום של מספר משתנה של ערכי מספרים שלמים.

  1. הכריזו על משתנה שיכיל את רשימת הארגומנטים באמצעות המאקרו <strong>va_list</strong>:

    va_list list;
  2. אתחלו את רשימת הארגומנטים:

    va_start(list, num);
  3. הכריזו על משתנה שיכיל את הסכום:

    int sum = 0;
  4. עברו בלולאה על כל האיברים, שלפו כל ארגומנט והוסיפו אותו לסכום:

    for (int i = 0; i < num; i++) {
           sum += va_arg(list, int); 
       }
  5. נקו את רשימת הארגומנטים לאחר סיום החישובים:

     va_end(list); 
  6. בפונקציה <strong>main</strong>, קראו לפונקציה <strong>sum</strong> כך:

      sum(2, 20, 30);  

     

 

challenge icon

אתגר

קל

באמצעות פונקציה וריאדית, צרו פונקציה בשם average שמחשבת ומדפיסה את ממוצע הציונים של התלמידים.

נסו בעצמכם

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

// פונקציה לחישוב הממוצע 


int main() {
    
    // יש לקרוא לפונקציה בעלת מספר משתנה של ארגומנטים | אין לשנות זאת
    average(4, 85, 90, 78, 92);

    return 0;
}

כל השיעורים ביחידה פונקציות ב-C

תרגלו בעצמכם: קומפיילר C אונליין