সি ফাংশন প্যারামিটার্স

প্যারামিটার্স কী?

সি তে ফাংশনে প্যারামিটার হলো ফাংশন কল করার সময় সে ফাংশনে ডাটা পাঠানোর একটি ব্যবস্থা । মনে করো আমরা দুটি সংখ্যা যোগ করার একটি ফাংশন লিখতে চাই, এখন যেই দুটি সংখ্যা যোগ করা হবে সেই দুটি সংখ্যার মান তো ফাংশনে পাঠাতে হবে, তাই না? এ দুটি সংখ্যার মান গ্রহণের জন্য যে ব্যবস্থা তাই প্যারামিটার । 

শুনতে কঠিন এবং হাবিজাবি মনে হলেও আগের লেসনে আমরা ইতিমধ্যেই প্যারামিটার্স ব্যবহার করে ফেলেছি ।

আগের লেসনের এই ফাংশনের কথ মনে আছে?

1int add(int a, int b) {
2    int sum = a + b;
3    return sum;
4}

 এখানের ব্র্যাকেটের মধ্যের এবং ই হলো এক একটি প্যারামিটার ।

আর্গুমেন্ট কী?

ফাংশন কল করার সময় প্রতিটি আর্গুমেন্টের বিপরীতে যে ডাটা পাঠানো হয় তাই আর্গুমেন্ট । যেমন এই উদাহরণটিই আবার বিবেচনা করা যাকঃ 

1#include <stdio.h>
2
3int add(int a, int b) {
4    int sum = a + b;
5    return sum;
6}
7
8int main()
9{
10    int num1 = 5, num2 = 10;
11    int result = add(num1, num2);
12    printf("Sum is: %d", result);
13    return 0;
14}

এখানে, লাইন ৩ এ যখন আমি লিখেছি, তখন সেগুলো প্যারামিটার । আর আমি যখন লাইন ১১ তে ফাংশনটিতে আসলে কল করছি তখন আমি তাতে যে ডাটা পাঠাচ্ছি, অর্থাৎ তখন এই দুটো হচ্ছে আর্গুমেন্ট । 

ফাংশনে আর্গুমেন্ট এর মান এর কপি পাঠানো হয়

মনে করো, আমার কাছে একটি ভ্যারিয়েবল আছে । এখন আমি এই কে আরেকটি ফাংশনে পাঠাবো এবং সেই ফাংশনের ভিতরে এর মান পাল্টাবো । এরপরে আবার ফাংশনে এর মান প্রিন্ট করে দেখবো আসলে তা হলো কি না । নিচের উদাহরণটি দেখোঃ 

1#include <stdio.h>
2
3void decreaseValueByTwo(int x){
4    x = x - 2;
5    printf("Value of x inside the other function: %d\n", x);
6}
7
8int main(){
9    int x = 10;
10    printf("Value of x before calling anything: %d\n", x);
11    decreaseValueByTwo(x);
12    printf("Value of x after calling other function: %d\n", x);
13    return 0;
14}
15

দেখো, এর ভ্যালু ফাংশনের ভিতরে পরিবর্তন হলেও সেই পরিবর্তন কিন্তু এর ভেতরে যে আছে তাকে পরিবর্তন করতে পারে নি । এর কারন হলো, লাইন ১১ তে আমরা যখন ফাংশনটিকে কল করছি, তখন এর মানের একটি কপি করে সেই কপিটিকে ফাংশনের ভেতরে পাঠানো হচ্ছে, তাই কপিটি চেঞ্জ করা হলেও আআসল ভ্যারিয়েবলের কোনো পরিবর্তন হয়নি । 

কিন্তু আমরা যদি আসলেই চাইতাম যে ফাংশন থেকেই আমরা ফাংশনের কে পরিবর্তন করবো? তখন আমাদের পয়েন্টার এবং মেমরি অ্যাড্রেসের কনসেপ্ট ব্যবহার করতে হবে । এ বিষয়ে আমরা পরে আলোচনা করেছি । 

প্যারামিটারে অ্যারে ব্যবহার

আমরা চাইলে একটি ফাংশনের প্যারামিটার হিসেবে অ্যারে ব্যবহার করতে পারি । যেমন দেখোঃ 

1#include <stdio.h>
2
3int sumOfIntegers(int numbers[], int length){
4    int sum = 0;
5    for(int i = 0; i < length; i++){
6        sum = sum + numbers[i];
7    }
8    return sum;
9}
10
11int main(){
12    int someRandomNumbers[] = {1, 2, 3, 4, 5 , 6};
13    int sumOfNumbers = sumOfIntegers(someRandomNumbers, 6);
14    printf("Sum is: %d", sumOfNumbers);
15
16    return 0;
17}
18

 

Logo

PyxLearn

Quick Links

আমাদের মেসেজ পাঠাতে চাও?