Call by value and Call by reference in C

Call by value and Call by reference in C: মনে কর, তুমি ঢাকা বিশ্ববিদ্যালয় ২১০ নাম্বার রুমে যেতে চাও, আমি বলে দিলাম নিচে গিয়ে গার্ড কে জিজ্ঞাসা করলে বলে দিবে। (কল বাই রেফারেন্স)।

আবার বলতে পারি ২য় তালায় ডান দিকে ২০৯ এর বিপরীতে রেজিস্টার যেখানে বসে। এখানে রেজিস্টার একটা ভ্যালু(কল বাই ভ্যালু) এই যে কোন ভাবে বললেই তুমি যেতে পারবে। এবং একই জায়গায় যাবে।

আমরা ফাংশনকে ডাটা নেয়ার জন্য এই দুই ভাবে বলে দিতে পারি । যেমন,

কল বাই ভ্যালু

আমরা বলতে পারি, যে ভ্যালু মেথড দ্বারা ফাংশন কলে ভেরিয়েবলের মান ব্যবহার করা হয়।

আমরা আনুষ্ঠানিক প্যারামিটার দ্বারা প্রকৃত পরামিতির মান পরিবর্তন করতে পারি না।

প্রকৃত এবং আনুষ্ঠানিক পরামিতির জন্য ভিন্ন মেমরি বরাদ্দ করা হয় যেহেতু প্রকৃত পরামিতির মান আনুষ্ঠানিক প্যারামিটারে অনুলিপি করা হয়।


#include<stdio.h>  
void change(int num) {    
    printf("Before adding value inside function num=%d \n",num);    
    num=num+100;    
    printf("After adding value inside function num=%d \n", num);    
} 
   
int main() {    
    int x=100;    
    printf("Before function call x=%d \n", x);    
    change(x);//passing value in function    
    printf("After function call x=%d \n", x);    
return 0;  
}    
Before function call x=100
Before adding value inside function num=100
After adding value inside function num=200
After function call x=100

কল বাই রেফারেন্স

ভেরিয়েবলের ঠিকানাটি আসল প্যারামিটার হিসাবে ফাংশন কলে পাস করা হয়।

প্রকৃত পরামিতিগুলির ঠিকানাটি পাস হওয়ার পর থেকে প্রকৃত পরামিতিগুলির মান আনুষ্ঠানিক পরামিতিগুলি পরিবর্তন করে পরিবর্তন করা যেতে পারে।

রেফারেন্স দ্বারা কলে, মেমরি বরাদ্দকরণ আনুষ্ঠানিক পরামিতি এবং প্রকৃত পরামিতি উভয়ের জন্যই একই রকম। ফাংশনের সমস্ত ক্রিয়াকলাপ প্রকৃত পরামিতিগুলির ঠিকানায় সংরক্ষিত মানের উপর সঞ্চালিত হয় এবং পরিবর্তিত মান একই ঠিকানায় সংরক্ষণ করা হয়।


#include<stdio.h>  
void change(int *num) {    
    printf("Before adding value inside function num=%d \n",*num);    
    (*num) += 100;    
    printf("After adding value inside function num=%d \n", *num);    
}      
int main() {    
    int x=100;    
    printf("Before function call x=%d \n", x);    
    change(&x);//passing reference in function    
    printf("After function call x=%d \n", x);    
return 0;  
}   
Before function call x=100
Before adding value inside function num=100
After adding value inside function num=200
After function call x=200

কাজ

  • ভেরিয়েবল এর এড্রেস প্রিন্ট করে দেখ
  • পয়েন্টার ভেরিয়েবল দেখ
  • Call by value and Call by reference in C সার্চ কর গুগুলে।
  • HelpLink

Discussion

  1. mp3

Leave a Reply