Difference Between Call By Value and Call By Reference?
Answers were Sorted based on User's Feedback
Answer / ravi s. sharma
In call by value, a copy of value known as(actual argument)
is passed to the function known as(formal argument). Both
values are stored at different locations and scope. The
changes made in a copy(formal argument) does not affect the
original value(actual argument).
In call by reference, a reference/address of variable known
as(actual argument) is passed to the function known
as(formal argument) which is stored in a
pointer/ref.variable. The changes made in a function
(through pointer/ref. variable) affect the original
value(actual argument).
Is This Answer Correct ? | 15 Yes | 5 No |
Answer / shashi shekhar
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 *.
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
Is This Answer Correct ? | 8 Yes | 1 No |
Answer / m.vairalkar
It is not difference
but good thing..Both tha
techniques r good ..if we want
changes then use call by refernce
otherwise use call by value
Is This Answer Correct ? | 10 Yes | 5 No |
Answer / prateek g
The call by value system copies the actual parameters to
actual parameters and then uses them i.e. the function
creates its own copy of values, any change in
these values will not be reflected
in the original values.
The call by reference system refers the actual parameters
i.e. these doesn’t creates a copy of original parameters,
any change in these parameters will be reflected back in
original parameters.
Is This Answer Correct ? | 7 Yes | 2 No |
Answer / varsha jarwal
In call by value:-
since new location is created, this method is slow.
In call by reference:-
since the existing memory location is used through its
address, this method is fast.
Is This Answer Correct ? | 5 Yes | 1 No |
Answer / pasang tsering
call by value:-value of the actual argument passed to the
formal arguments.
call by reference:-address of the actual arguments passed
to the fomal arguments.
Is This Answer Correct ? | 4 Yes | 1 No |
Answer / atul gupta
call by value: copies the value of argument into the formal
parameter.Any changes made in the parameter does not affect
the argument .
call by reference : copies the address of argument into the
formal parameter . The address will access the actual argument
used in the call . so any changes made in the parameter will effect the argument
Is This Answer Correct ? | 4 Yes | 2 No |
Answer / vino
Mostly call by value and call by reference is differ from
copy and modify process..
Copy:
Call by value:
It take difference memory locations for variables.Duplicate copy of the original parameter is passed.
Call by reference:
It takes Same memoy locations for variables.Actual copy of the original parameter is passed.
Modify:
Call by value:
No affect on original parameter after modifying the parameter in functions.
Call by reference:
original parameter can be affect afetr modifying the parameter in function..
Is This Answer Correct ? | 2 Yes | 0 No |
Answer / meghanchal kumar dixit
call by value-
If we call a function in C by passing values of variables as the parameters/arguments to the function then such type of function call is known as Call by value.
call by reference-A function by passing addresses of variables as the parameters to the function is known as Call by Reference.
Is This Answer Correct ? | 2 Yes | 0 No |
Answer / aishwarya kulkarni
In call By Value it create different memory for local
variable and actual called Variable. so changes does not
affect to the actual variable.
Call By Reference:
In call By Reference Compiler create same memory location
for the local variable and actual called variable so changes
affect to the actual variable and modify the value of actual
called Variable.
Is This Answer Correct ? | 1 Yes | 0 No |
diff types of BAPIS?
why SAP scripts and smartforms are used
Define database layer?
What is a modification assistant?
What secondary index and use of it and how many secondary index we can create?
Hello All, Requesting to all user of this site. Please post your Questions in Proper sub Category of chosen category. Some users post the questions in common category whether sub category for that is available ..like some users still post the SAP Script & ALE Related questions in common ABAP Category. Due to this it becomes very difficult to find the topic wise Questions. Please cooperate with the site & to other users. Thanks & Regards Tamseel
Difference between GET and GET Late?
What are screen painter and menu painter?
Transaction code for creating Message class?
What are the differences between primary and secondary indexes?
WHAT IS TCODE TO CREATE NEW MESSAGE TYPE?
When writing BDC for MM01 how do you take care of views?