دوال ذات معطيات متغيرة العدد
من cppreference.com
< c
الدوال ذات معطيات متغيرة العدد (بالإنجليزية: variadic arguments أو varargs) هي دوال مثل printf يمكن ان تستقبل وتتعامل مع عدد متغير من المعطيات.
الإعلان عن دالة ذات معطيات متغيرة يتم عن طريق استعمال ثلاث نقاط كمعطى آخير (مثلا int printf(const char* format, ...);). أنظر Variadic arguments
للمزيد من المعلومات عن كيفية الإستعمال والتحويلات التلقائية التي تحدث للمعطيات.
يمكن استعمال هذه الخاصية من داخل أي دالة معلن عنها كذلك باستخدام الدوال التالية:
معرفة في ملف
<stdarg.h> | |
ماكرو | |
| تمكن من ابتداء التعامل مع معطيات دالة variadic (ماكرو دالة) | |
| تأتي بالمعطى التالي لدالة variadic (ماكرو دالة) | |
(C99) |
تأتي بنسخة من معطيات دالة variadic (ماكرو دالة) |
| تنهي التعامل مع معطيات دالة variadic (ماكرو دالة) | |
أنواع | |
| تحمل المعلومات اللازمة لعمل va_start و va_arg و va_end و va_copy (معرف بـ typedef) | |
مثال
تطبع قيم ذات أنواع مختلفة.
قم بتشغيل هذا الكود:
#include <stdio.h>
#include <stdarg.h>
void simple_printf(const char* fmt,...)
{
va_list args;
va_start(args, fmt);
while (*fmt != '\0') {
if (*fmt == 'd') {
int i = va_arg(args, int);
printf("%d\n", i);
} else if (*fmt == 'c') {
// note automatic conversion to integral type
int c = va_arg(args, int);
printf("%c\n", c);
} else if (*fmt == 'f') {
double d = va_arg(args, double);
printf("%f\n", d);
}
++fmt;
}
va_end(args);
}
int main(void)
{
simple_printf("dcff", 3, 'a', 1.999, 42.5);
}
الخرج:
3
a
1.999000
42.50000
أنظر أيضا
مقالة مرجع C++ عن Variadic functions
|