আমরা জানি ফাংশন দুভাবে কল করা যায়: কল বাই ভ্যালু (Call by Value) এবং কল বাই রেফারেন্স (Call by Reference)।
- যদি একচুয়াল প্যারামিটার কলড ফাংশনে পরিবর্তন না হয়ে থাকা উচিত, তবে প্যারামিটার ভ্যালু দিয়ে পাস করুন।
- যদি একচুয়াল প্যারামিটারের মান কলড ফাংশনে পরিবর্তন করতে হয়, তবে পাস-বাই-রেফারেন্স ব্যবহার করুন।
- যদি ফাংশন একাধিক মান রিটার্ন করতে হয়, তবে কল-বাই-রেফারেন্স ব্যবহার করে ইনডাইরেক্টলি এই মানগুলো রিটার্ন করুন।
উদাহরণ
একাধিক মান রিটার্ন করার ডেমোন্সট্রেশনের C প্রোগ্রাম:
#include<stdio.h> void main() { void areaperi(int,int*,int*); int r; float a,p; printf("enter radius of circle:\n"); scanf("%d",&r); areaperi(r,&a,&p); printf("area=%f\n",a); printf("perimeter=%f",p); } void areaperi(int x,int *p,int *q) { *p=3.14*x*x; *q=2 * 3.14*x; }
আউটপুট
উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের আউটপুটটি দেখায়:
Enter radius of circle: 5 Area=78.50000 Perimeter=31.40000
নোট
- পয়েন্টারদের সাথে একটি টাইপ জড়িত থাকে। সেগুলো শুধু পয়েন্টার টাইপ নয়, বরং নির্দিষ্ট টাইপের পয়েন্টার।
- সকল পয়েন্টারের সাইজ একই, যা int এর সাইজের সমান।
- প্রতিটি পয়েন্টার কম্পিউটারে একটি মেমরি লোকেশনের ঠিকানা ধারণ করে, কিন্তু পয়েন্টার যে ভেরিয়েবলকে রেফার করে তার সাইজ ভিন্ন হতে পারে।