সি পাইথন প্রোগ্রামিং জাভাস্ক্রিপ্ট পিএইচপি এসকিউএল জেকুয়েরি এইচটিএমএল সিএসএস বুটস্ট্রাপ এঙ্গুলার জেএস
লগইন
×

 সি টিউটোরিয়াল

সি প্রোগ্রামিং কি? সি এর ইতিহাস সি এর বৈশিষ্ট্যসমূহ কেন সি শিখবেন? সি ইন্সটলেশন প্রথম সি প্রোগ্রাম সি প্রোগ্রামের ফ্লো প্রোগ্রামিং শেখার সঠিক পদ্ধতি সি কীওয়ার্ড সি আইডেন্টিফায়ার সি ভ্যারিয়েবল সি কনস্ট্যান্ট সি ডাটা টাইপ সি মোডিফায়ার সি ইনপুট/আউটপুট সি অপারেটর সি কমেন্ট সি অপারেটর অগ্রাধিকার

সি কন্ট্রোল স্টেটমেন্ট

সি ইফ সি ইফ...ইলস সি ফর লুপ সি হোহাইল লুপ সি ডু...হোহাইল লুপ সি ব্রেক সি কন্টিনিউ সি সুইচ স্টেটমেন্ট সি goto স্টেটমেন্ট

 সি ফাংশন

সি ফাংশন পরিচিতি সি ইউজার কর্তৃক ফাংশন সি ফাংশন টাইপ সি রিকার্সন সি ভ্যারিয়েবল স্কোপ

 সি অ্যারে

সি অ্যারে পরিচিতি সি মালটি-ডাইমেনশনাল অ্যারে সি অ্যারে ফাংশন

 সি স্ট্রিং

সি স্ট্রিং সি স্ট্রিং ফাংশন

 সি পয়েন্টার

সি পয়েন্টার পরিচিত সি পয়েন্টার অ্যারে সি পয়েন্টার ফাংশন সি মেমোরি ম্যানেজমেন্ট

 সি ফাইল এবং স্ট্রাকচার

স্ট্রাকচার পরিচিত স্ট্রাকচার ও পয়েন্টার সি স্ট্রাকচার ও ফাংশন সি ইউনিয়ন ফাইল হ্যান্ডেলিং

 সি অতিরিক্ত টিউটোরিয়াল

সি লাইব্রেরী সি প্রিপ্রোসেসর এবং ম্যাক্রো সি ইনুমিরেশন সি এরর নিয়ন্ত্রণ সি টাইপ কাস্টিং সি বিট ফিল্ড সি ভ্যারিয়েবল আর্গুমেন্ট সি কমান্ড লাইন আর্গুমেন্ট

 

সি ভ্যারিয়েবল আর্গুমেন্ট - 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