Knowledge Base
Home C

What is difference between call by value and call by reference in function?

Category: C | Comments (2)

The arguments passed to function can be of two types

1. Values passed 2. Address passed

The first type refers to call by value and the second type refers to call by reference.


For instance consider program1

main() { int x=50, y=70; interchange(x,y); printf(“x=%d y=%d”,x,y); } interchange(x1,y1) int x1,y1; { int z1; z1=x1; x1=y1; y1=z1; printf(“x1=%d y1=%d”,x1,y1); }

Here the value to function interchange is passed by value.


Consider program2

main() { int x=50, y=70; interchange(&x,&y); printf(“x=%d y=%d”,x,y); } interchange(x1,y1) int *x1,*y1; { int z1; z1=*x1; *x1=*y1; *y1=z1; printf(“*x=%d *y=%d”,x1,y1); }

Here the function is called by reference. In other words address is passed by using symbol & and the value is accessed by using symbol *.


Sponsored Links

The main difference between them can be seen by analyzing the output of program1 and program2.


The output of program1 that is call by value is

x1=70 y1=50 x=50 y=70

But the output of program2 that is call by reference is

*x=70 *y=50 x=70 y=50

This is because in case of call by value the value is passed to function named as interchange and there the value got interchanged and got printed as

x1=70 y1=50

and again since no values are returned back and therefore original values of x and y as in main function namely

x=50 y=70 got printed.

But in case of call by reference address of the variable got passed and therefore what ever changes that happened in function interchange got reflected in the address location and therefore the got reflected in original function call in main also without explicit return value. So value got printed as *x=70 *y=50 and x=70 y=50


Next: Convert a String into Long Value


Comments

in call by value method,a compiler get a copy of the variable and thus changes made in the value in function will not reflected back to the called function.but in call by reference method,the compiler didn't get any copy ,but actually it works on the original copy and thus changes will be reflected back
Comment posted by: nancysharma on 2008-05-18T05:55:48
frequently difference between the call by value and call by reference.
Comment posted by: chittaranjan Nath on 2008-06-05T04:56:15


Post Comment


Members Please Login

Name:


Email:
 
(Optional. Used for Notification)

Title:

 
Comment:


Validation Code:
 <=>  (Enter this code in text box)
Subscribe





Daily Email Updates

Get Latest Knowledge Base Updates delivered directly to your Inbox...

Enter your email address:

Latest Knowledge Base Updates
 

C Tutorials

 

Related Tutorials

 

Sponsored Links