call by value and call by reference method in C language

Call by value method 
  1. In call by value method, the value of the actual arguments is copied into the formal arguments. 
  2. In call by value method, we can not modify the value of the actual argument by changing the value of formal argument. 
  3. In call by value method, different memory is allocated for actual arguments and formal arguments. 
  4. In call by value method, the actual argument is used in the function call whereas formal argument is used in the function definition.
  5. In call by value method, function can return only one value directly.
 कॉल बाय वैल्यू मेथड-
  1. कॉल बाय वैल्यू मेथड में एक्चुअल आर्गुमेंट को फॉर्मल आर्गुमेंट में कॉपी किया जाता है।
  2. कॉल बाय वैल्यू मेथड में एक्चुअल आर्गुमेंट की वैल्यू को फॉर्मल आर्गुमेंट की वैल्यू में परिवर्तन कर, परिवर्तित नहीं किया जा सकता है।
  3. कॉल बाय वैल्यू मेथड में एक्चुअल आर्गुमेंट और फॉर्मल आर्गुमेंट  को अलग अलग मेमोरी प्रदान की जाती है।
  4. कॉल बाय वैल्यू मेथड में एक्चुअल आर्गुमेंट फंक्शन कालिंग में प्रयुक्त किया जाता है और फॉर्मल आर्गुमेंट  फंक्शन की डेफिनिशन में प्रयुक्त किया जाता है।
  5. कॉल बाय वैल्यू मेथड में फंक्शन प्रत्यक्ष रूप से केवल एक वैल्यू रिटर्न कर सकता है।
Example:-
C program to swap values of two variables using function (call by value).

#include<stdio.h>
#include<conio.h>
void main(){
int a,b;
void swap(int,int);
clrscr();
printf("Enter two integer numbers\n");
scanf("%d%d",&a,&b);
printf("Before swapping A=%d and B=%d\n",a,b);
swap(a,b);
//actual arguments will not change.
printf("A=%d and B=%d\n",a,b);
getch();
}
void swap(int x,int y){
int z;
z=x;
x=y;
y=z;
printf("After swapping A=%d and B=%d\n",x,y);
return;
}

Call by reference method-

  1. In call by reference method , the address of the actual arguments is stored into pointer variable.
  2. In call by reference method , we can not modify the value of the actual argument by changing the value stored in memory address pointed by pointers.
  3. In call by reference, Memory which is allocated for actual arguments pointed by pointers. 
  4. In call by reference method, the address of actual argument is used in the function call whereas pointer as formal argument is used in the function definition.
  5. In call by reference method, function can return only one value directly but many values indirectly.
कॉल बाय रिफरेन्स मेथड-
  1. कॉल बाय रिफरेन्स मेथड में एक्चुअल आर्गुमेंट के एड्रेस को पॉइंटर वेरिएबल में स्टोर किया जाता है।
  2. कॉल बाय रिफरेन्स मेथड में एक्चुअल आर्गुमेंट की वैल्यू को पॉइंटर द्वारा पॉइंट किये जाने वाले मेमोरी एड्रेस पर रखी वैल्यूज में परिवर्तन कर, परिवर्तित किया जा सकता है।
  3. कॉल बाय रिफरेन्स मेथड में एक्चुअल आर्गुमेंट के मेमोरी एड्रेस को पॉइंटर वेरिएबल द्वारा पॉइंट किया जाता है।
  4. कॉल बाय रिफरेन्स मेथड में एक्चुअल आर्गुमेंट का एड्रेस फंक्शन कालिंग में प्रयुक्त किया जाता है और पॉइंटर (फॉर्मल आर्गुमेंट के रूप में ) फंक्शन  की डेफिनिशन में प्रयुक्त किया जाता है।
  5. कॉल बाय रिफरेन्स मेथड में फंक्शन प्रत्यक्ष रूप से केवल एक वैल्यू रिटर्न कर सकता है परन्तु अप्रत्यक्ष रूप से कई वैल्यू रिटर्न कर सकता है।
Example:-

C program to swap values of two variables using function (call by reference method).

#include<stdio.h>
#include<conio.h>
void main(){
int a,b;
void swap(int*,int*);
clrscr();
printf("Enter two integer numbers\n");
scanf("%d%d",&a,&b);
printf("Before swapping A=%d and B=%d\n",a,b);
swap(&a,&b);
printf("After swapping A=%d and B=%d\n",a,b);
getch();
}
void swap(int *x,int *y){
int z;
z=*x;
*x=*y;
*y=z;
return;
}



No comments:

Post a Comment