সি ভ্যারিয়েবল আর্গুমেন্ট - C Variable Arguments
এই অধ্যায়ে আপনি সি ভ্যারিয়েবল আর্গুমেন্ট সম্মন্ধে জানবেন। ভ্যারিয়েবল আর্গুমেন্ট বলতে পূর্ব-নির্ধারিত আর্গুমেন্টের পরিবর্তে যেকোনো সংখ্যক আর্গুমেন্টকে বুঝানো হয়।
সি ভ্যারিয়েবল আর্গুমেন্ট
কিছু কিছু ক্ষেত্রে আপনি এমন সব ফাংশনের আকাংখ্যা করতে পারেন যা আপনার প্রয়োজন অনুসারে আর্গুমেন্ট (variable number of argument) গ্রহণ করতে পারে। অর্থাৎ পূর্ব-নির্ধারিত প্যারামিটারের পরিবর্তে যেন যেকোনো সংখ্যক প্যারামিটার গ্রহণ করতে পারে।
সি প্রোগ্রামিং আপনাকে এই সমস্যার সমাধান সরবরাহ করে। সি প্রোগ্রামিং আপনাকে এমন একটি ফাংশন ডিফাইন করার সুযোগ দেয় যা আপনার প্রয়োজন অনুসারে আর্গুমেন্ট গ্রহণ করতে পারে।
নিচের উদাহরণের সাহায্যে এধরনের ফাংশনের ব্যাখ্যা করা হলোঃ
int functionName(int, ... ) {
.
.
.
}
int main() {
functionName(1, 2, 3);
functionName(1, 2, 3, 4);
.
.
.
}
উপরের সিন্ট্যাক্সে লক্ষ্য করলে দেখবেন যে, তিনটি ডট(...) চিহ্নকে functionName() ফাংশনের শেষ আরগুমেন্ট হিসাবে ব্যবহার করা হয়েছে। ডট(.) চিহ্নের আগে সর্বদাই একটি int
ব্যবহার করা হয় যা মোট ভ্যারিয়েবল আরগুমেন্টের সংখ্যাকে বুঝায়। এ ধরণের বৈশিষ্ট্য ব্যবহার করার জন্য আপনাকে আপনার প্রোগ্রামে stdarg.h
হেডার ফাইল সংযুক্ত করতে হবে যার মধ্যে এই বৈশিষ্ট্যাবলীর ফাংশন এবং ম্যাক্রো ডিফাইন করা আছে।
#include <stdio.h>
#include <stdarg.h>
double average(int num,...) {
va_list valist;
double sum = 0.0;
int i;
/* initialize valist for num number of arguments */
va_start(valist, num);
/* access all the arguments assigned to valist */
for (i = 0; i < num; i++) {
sum += va_arg(valist, int);
}
/* clean memory reserved for valist */
va_end(valist);
return sum/num;
}
int main() {
printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
}
উপরের প্রোগ্রামে লক্ষ্য করলে দেখবেন যে, average() ফাংশনটিকে দুইবার কল করা হয়েছে এবং উভয় ক্ষেত্রেই প্রথম আর্গুমেন্ট দ্বারা ফাংশনের মধ্য দিয়ে অতিক্রম হওয়া ভ্যারিয়েবল আর্গুমেন্টের সংখ্যা বুঝানো হয়েছে। ফাংশনের মধ্য দিয়ে ভ্যারিয়েবল সংখ্যক আর্গুমেন্ট অতিক্রম করানোর জন্য শুধুমাত্র ডট(.) চিহ্ন ব্যবহৃত হয়।
উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করা হলে ইহা নিচের ন্যায় ফলাফল দেখাবেঃ
Average of 2, 3, 4, 5 = 3.500000 Average of 5, 10, 15 = 10.000000